Opened 17 months ago

Closed 17 months ago

Last modified 17 months ago

#34707 closed Uncategorized (invalid)

AttributeError: 'function' object has no attribute 'cache_clear' when registering a custom lookup

Reported by: Justin Michalicek Owned by: nobody
Component: Uncategorized Version: 4.1
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Going from the documentation at https://docs.djangoproject.com/en/4.1/howto/custom-lookups/#a-lookup-example, I created the custom lookup exactly as shown there. I then registered it in an AppConfig.ready(). When django starts I get the exception AttributeError: 'function' object has no attribute 'cache_clear'.

python manage.py runserver 0.0.0.0:8000
timestamp=None level=None event='Watching for file changes with StatReloader' logger=None
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
    self.run()
  File "/app/.venv/lib/python3.11/site-packages/sentry_sdk/integrations/threading.py", line 72, in run
    reraise(*_capture_exception())
  File "/app/.venv/lib/python3.11/site-packages/sentry_sdk/_compat.py", line 60, in reraise
    raise value
  File "/app/.venv/lib/python3.11/site-packages/sentry_sdk/integrations/threading.py", line 70, in run
    return old_run_func(self, *a, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/threading.py", line 975, in run
    self._target(*self._args, **self._kwargs)
  File "/app/.venv/lib/python3.11/site-packages/django/utils/autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "/app/.venv/lib/python3.11/site-packages/django/core/management/commands/runserver.py", line 125, in inner_run
    autoreload.raise_last_exception()
  File "/app/.venv/lib/python3.11/site-packages/django/utils/autoreload.py", line 87, in raise_last_exception
    raise _exception[1]
  File "/app/.venv/lib/python3.11/site-packages/django/core/management/__init__.py", line 398, in execute
    autoreload.check_errors(django.setup)()
  File "/app/.venv/lib/python3.11/site-packages/django/utils/autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "/app/.venv/lib/python3.11/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/app/.venv/lib/python3.11/site-packages/django/apps/registry.py", line 124, in populate
    app_config.ready()
  File "/app/app/my_project/core/apps.py", line 13, in ready
    Field.register_lookup(NotEqual)
  File "/app/.venv/lib/python3.11/site-packages/django/db/models/query_utils.py", line 256, in register_lookup
    cls._clear_cached_lookups()
  File "/app/.venv/lib/python3.11/site-packages/django/db/models/query_utils.py", line 247, in _clear_cached_lookups
    subclass.get_lookups.cache_clear()
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'function' object has no attribute 'cache_clear'

Change History (1)

comment:1 by David Sanders, 17 months ago

Resolution: invalid
Status: newclosed

Registering custom lookups in an app config's ready works ok for me. You may need to paste copies of your code/setup to show how you're registering it.

Additionally you can seek help from a wider audience using one of the Django support channels: https://www.djangoproject.com/community/ You'll need

Version 0, edited 17 months ago by David Sanders (next)
Note: See TracTickets for help on using tickets.
Back to Top