[BUG] cms_pageurl.site_id does not exist in 5.1.1 and 5.1.2
Author: MacLakeCreated Aug 31, 2026Updated Sep 8, 2026
Description
After upgrading to django-cms 5.1.1 or 5.1.2 I get an error in my multi site instance.
Steps to reproduce
I guess the reason is triggered by the multi site setup with site ids, as the error message involves cms_pageurl.site_id, and somewhere I read that it’s now possible to have a multi site installation with middleware instead of site ids.
Expected behaviour
No error when using site ids for multi site installations, like until django CMS 5.1.0
Actual behaviour
Error with traceback when calling a page or test or migrate:
[31/Aug/2026 17:45:24] "GET / HTTP/1.1" 302 0
Internal Server Error: /en/
Traceback (most recent call last):
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/psycopg/cursor.py", line 117, in execute
raise ex.with_traceback(None)
psycopg.errors.UndefinedColumn: column cms_pageurl.site_id does not exist
LINE 1: ...cms_pageurl"."language", "cms_pageurl"."page_id", "cms_pageu...
^
HINT: Perhaps you meant to reference the column "cms_pageurl.page_id" or the column "cms_page.site_id".
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 56, in inner
response = get_response(request)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 199, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/cms/views.py", line 104, in details
page = get_page_from_request(request, use_path=slug)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/cms/utils/page.py", line 114, in get_page_from_request
page_urls = list(page_urls) # force queryset evaluation to save 1 query
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 434, in __iter__
self._fetch_all()
~~~~~~~~~~~~~~~^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 2239, in _fetch_all
self._result_cache = list(self._iterable_class(self))
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 98, in __iter__
results = compiler.execute_sql(
chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size
)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/models/sql/compiler.py", line 1624, in execute_sql
cursor.execute(sql, params)
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
sql, params, many=False, executor=self._execute
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 100, in _execute
with self.db.wrap_database_errors:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/utils.py", line 94, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/psycopg/cursor.py", line 117, in execute
raise ex.with_traceback(None)
django.db.utils.ProgrammingError: column cms_pageurl.site_id does not exist
LINE 1: ...cms_pageurl"."language", "cms_pageurl"."page_id", "cms_pageu...
^
HINT: Perhaps you meant to reference the column "cms_pageurl.page_id" or the column "cms_page.site_id".
[31/Aug/2026 17:45:25] "GET /en/ HTTP/1.1" 500 188050
[31/Aug/2026 17:45:28] "GET /favicon.ico HTTP/1.1" 302 0
Internal Server Error: /en/favicon.ico/
Traceback (most recent call last):
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/psycopg/cursor.py", line 117, in execute
raise ex.with_traceback(None)
psycopg.errors.UndefinedColumn: column cms_pageurl.site_id does not exist
LINE 1: ...cms_pageurl"."language", "cms_pageurl"."page_id", "cms_pageu...
^
HINT: Perhaps you meant to reference the column "cms_pageurl.page_id" or the column "cms_page.site_id".
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/core/handlers/exception.py", line 56, in inner
response = get_response(request)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 199, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/cms/views.py", line 104, in details
page = get_page_from_request(request, use_path=slug)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/cms/utils/page.py", line 114, in get_page_from_request
page_urls = list(page_urls) # force queryset evaluation to save 1 query
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 434, in __iter__
self._fetch_all()
~~~~~~~~~~~~~~~^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 2239, in _fetch_all
self._result_cache = list(self._iterable_class(self))
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/models/query.py", line 98, in __iter__
results = compiler.execute_sql(
chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size
)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/models/sql/compiler.py", line 1624, in execute_sql
cursor.execute(sql, params)
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 122, in execute
return super().execute(sql, params)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 79, in execute
return self._execute_with_wrappers(
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
sql, params, many=False, executor=self._execute
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 100, in _execute
with self.db.wrap_database_errors:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/utils.py", line 94, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/django/db/backends/utils.py", line 105, in _execute
return self.cursor.execute(sql, params)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/home/jens/develop/django-cms-phi/.venv/lib/python3.13/site-packages/psycopg/cursor.py", line 117, in execute
raise ex.with_traceback(None)
django.db.utils.ProgrammingError: column cms_pageurl.site_id does not exist
LINE 1: ...cms_pageurl"."language", "cms_pageurl"."page_id", "cms_pageu...
^
HINT: Perhaps you meant to reference the column "cms_pageurl.page_id" or the column "cms_page.site_id".Additional information (CMS/Python/Django versions)
django CMS 5.1.2 django 6.1 Python 3.13.13
Do you want to help fix this issue?
- [x ] Yes, I want to help fix this issue and I will join the channel #pr-reviews on the Discord Server to confirm with the community that a PR is welcome.
- No, I only want to report the issue.
Source: django-cms/django-cms