OperationalError                          Traceback (most recent call last)
File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/backends/utils.py:105, in CursorWrapper._execute(self, sql, params, *ignored_wrapper_args)
    104 else:
--> 105     return self.cursor.execute(sql, params)

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/backends/sqlite3/base.py:360, in SQLiteCursorWrapper.execute(self, query, params)
    359 query = self.convert_query(query, param_names=param_names)
--> 360 return super().execute(query, params)

OperationalError: Expression tree is too large (maximum depth 1000)

The above exception was the direct cause of the following exception:

OperationalError                          Traceback (most recent call last)
Cell In[4], line 1
----> 1 x = list(Organisation.objects.all().prefetch_related("roles__project"))

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/query.py:384, in QuerySet.__iter__(self)
    369 def __iter__(self):
    370     """
    371     The queryset iterator protocol uses three nested iterators in the
    372     default case:
   (...)    382            - Responsible for turning the rows into model objects.
    383     """
--> 384     self._fetch_all()
    385     return iter(self._result_cache)

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/query.py:1951, in QuerySet._fetch_all(self)
   1949     self._result_cache = list(self._iterable_class(self))
   1950 if self._prefetch_related_lookups and not self._prefetch_done:
-> 1951     self._prefetch_related_objects()

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/query.py:1328, in QuerySet._prefetch_related_objects(self)
   1326 def _prefetch_related_objects(self):
   1327     # This method can only be called once the result cache has been filled.
-> 1328     prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
   1329     self._prefetch_done = True

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/query.py:2397, in prefetch_related_objects(model_instances, *related_lookups)
   2394     obj_to_fetch = [obj for obj in obj_list if not is_fetched(obj)]
   2396 if obj_to_fetch:
-> 2397     obj_list, additional_lookups = prefetch_one_level(
   2398         obj_to_fetch,
   2399         prefetcher,
   2400         lookup,
   2401         level,
   2402     )
   2403     # We need to ensure we don't keep adding lookups from the
   2404     # same relationships to stop infinite recursion. So, if we
   2405     # are already on an automatically added lookup, don't add
   2406     # the new lookups from relationships we've seen already.
   2407     if not (
   2408         prefetch_to in done_queries
   2409         and lookup in auto_lookups
   2410         and descriptor in followed_descriptors
   2411     ):

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/query.py:2598, in prefetch_one_level(instances, prefetcher, lookup, level)
   2592 if additional_lookups:
   2593     # Don't need to clone because the manager should have given us a fresh
   2594     # instance, so we access an internal instead of using public interface
   2595     # for performance reasons.
   2596     rel_qs._prefetch_related_lookups = ()
-> 2598 all_related_objects = list(rel_qs)
   2600 rel_obj_cache = {}
   2601 for rel_obj in all_related_objects:

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/query.py:384, in QuerySet.__iter__(self)
    369 def __iter__(self):
    370     """
    371     The queryset iterator protocol uses three nested iterators in the
    372     default case:
   (...)    382            - Responsible for turning the rows into model objects.
    383     """
--> 384     self._fetch_all()
    385     return iter(self._result_cache)

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/query.py:1949, in QuerySet._fetch_all(self)
   1947 def _fetch_all(self):
   1948     if self._result_cache is None:
-> 1949         self._result_cache = list(self._iterable_class(self))
   1950     if self._prefetch_related_lookups and not self._prefetch_done:
   1951         self._prefetch_related_objects()

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/query.py:91, in ModelIterable.__iter__(self)
     88 compiler = queryset.query.get_compiler(using=db)
     89 # Execute the query. This will also fill compiler.select, klass_info,
     90 # and annotations.
---> 91 results = compiler.execute_sql(
     92     chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size
     93 )
     94 select, klass_info, annotation_col_map = (
     95     compiler.select,
     96     compiler.klass_info,
     97     compiler.annotation_col_map,
     98 )
     99 model_cls = klass_info["model"]

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/models/sql/compiler.py:1623, in SQLCompiler.execute_sql(self, result_type, chunked_fetch, chunk_size)
   1621     cursor = self.connection.cursor()
   1622 try:
-> 1623     cursor.execute(sql, params)
   1624 except Exception:
   1625     # Might fail for server-side cursors (e.g. connection closed)
   1626     cursor.close()

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/backends/utils.py:122, in CursorDebugWrapper.execute(self, sql, params)
    120 def execute(self, sql, params=None):
    121     with self.debug_sql(sql, params, use_last_executed_query=True):
--> 122         return super().execute(sql, params)

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/backends/utils.py:79, in CursorWrapper.execute(self, sql, params)
     78 def execute(self, sql, params=None):
---> 79     return self._execute_with_wrappers(
     80         sql, params, many=False, executor=self._execute
     81     )

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/backends/utils.py:92, in CursorWrapper._execute_with_wrappers(self, sql, params, many, executor)
     90 for wrapper in reversed(self.db.execute_wrappers):
     91     executor = functools.partial(wrapper, executor)
---> 92 return executor(sql, params, many, context)

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/backends/utils.py:100, in CursorWrapper._execute(self, sql, params, *ignored_wrapper_args)
     98     warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
     99 self.db.validate_no_broken_transaction()
--> 100 with self.db.wrap_database_errors:
    101     if params is None:
    102         # params default might be backend specific.
    103         return self.cursor.execute(sql)

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/utils.py:91, in DatabaseErrorWrapper.__exit__(self, exc_type, exc_value, traceback)
     89 if dj_exc_type not in (DataError, IntegrityError):
     90     self.wrapper.errors_occurred = True
---> 91 raise dj_exc_value.with_traceback(traceback) from exc_value

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/backends/utils.py:105, in CursorWrapper._execute(self, sql, params, *ignored_wrapper_args)
    103     return self.cursor.execute(sql)
    104 else:
--> 105     return self.cursor.execute(sql, params)

File ~/PycharmProjects/dataviz/.venv/lib/python3.12/site-packages/django/db/backends/sqlite3/base.py:360, in SQLiteCursorWrapper.execute(self, query, params)
    358 param_names = list(params) if isinstance(params, Mapping) else None
    359 query = self.convert_query(query, param_names=param_names)
--> 360 return super().execute(query, params)

OperationalError: Expression tree is too large (maximum depth 1000)
