denshoproject / namesdb-editor

Other
0 stars 0 forks source link

`FieldError Related Field got invalid lookup` #40

Closed gjost closed 1 year ago

gjost commented 1 year ago
Environment:

Request Method: GET
Request URL: http://namesdbeditor.local/admin/names/location/?q=tule+lake

Django Version: 4.1.11
Python Version: 3.9.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'bootstrap_pagination',
 'drf_yasg',
 'rest_framework',
 'editor',
 'names',
 'namesdb_public']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback (most recent call last):
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/core/handlers/exception.py", line 56, in inner
    response = get_response(request)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/options.py", line 686, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/utils/decorators.py", line 134, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/views/decorators/cache.py", line 62, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/sites.py", line 242, in inner
    return view(request, *args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/utils/decorators.py", line 46, in _wrapper
    return bound_method(*args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/utils/decorators.py", line 134, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/options.py", line 1932, in changelist_view
    cl = self.get_changelist_instance(request)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/options.py", line 834, in get_changelist_instance
    return ChangeList(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/views/main.py", line 122, in __init__
    self.queryset = self.get_queryset(request)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/views/main.py", line 529, in get_queryset
    qs, search_may_have_duplicates = self.model_admin.get_search_results(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/options.py", line 1153, in get_search_results
    queryset = queryset.filter(models.Q(*term_queries))
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/query.py", line 1421, in filter
    return self._filter_or_exclude(False, args, kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/query.py", line 1439, in _filter_or_exclude
    clone._filter_or_exclude_inplace(negate, args, kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/query.py", line 1446, in _filter_or_exclude_inplace
    self._query.add_q(Q(*args, **kwargs))
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1532, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1562, in _add_q
    child_clause, needed_inner = self.build_filter(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1388, in build_filter
    return self._add_q(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1562, in _add_q
    child_clause, needed_inner = self.build_filter(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1388, in build_filter
    return self._add_q(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1562, in _add_q
    child_clause, needed_inner = self.build_filter(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1478, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1292, in build_lookup
    raise FieldError(

Exception Type: FieldError at /admin/names/location/
Exception Value: Related Field got invalid lookup: icontains
Environment:

Request Method: GET
Request URL: http://namesdbeditor.local/admin/names/personlocation/?q=tule+lake

Django Version: 4.1.11
Python Version: 3.9.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'bootstrap_pagination',
 'drf_yasg',
 'rest_framework',
 'editor',
 'names',
 'namesdb_public']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback (most recent call last):
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/core/handlers/exception.py", line 56, in inner
    response = get_response(request)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/options.py", line 686, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/utils/decorators.py", line 134, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/views/decorators/cache.py", line 62, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/sites.py", line 242, in inner
    return view(request, *args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/utils/decorators.py", line 46, in _wrapper
    return bound_method(*args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/utils/decorators.py", line 134, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/options.py", line 1932, in changelist_view
    cl = self.get_changelist_instance(request)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/options.py", line 834, in get_changelist_instance
    return ChangeList(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/views/main.py", line 122, in __init__
    self.queryset = self.get_queryset(request)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/views/main.py", line 529, in get_queryset
    qs, search_may_have_duplicates = self.model_admin.get_search_results(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/contrib/admin/options.py", line 1153, in get_search_results
    queryset = queryset.filter(models.Q(*term_queries))
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/query.py", line 1421, in filter
    return self._filter_or_exclude(False, args, kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/query.py", line 1439, in _filter_or_exclude
    clone._filter_or_exclude_inplace(negate, args, kwargs)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/query.py", line 1446, in _filter_or_exclude_inplace
    self._query.add_q(Q(*args, **kwargs))
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1532, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1562, in _add_q
    child_clause, needed_inner = self.build_filter(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1388, in build_filter
    return self._add_q(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1562, in _add_q
    child_clause, needed_inner = self.build_filter(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1388, in build_filter
    return self._add_q(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1562, in _add_q
    child_clause, needed_inner = self.build_filter(
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1478, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/opt/namesdb-editor/venv/names/lib/python3.9/site-packages/django/db/models/sql/query.py", line 1292, in build_lookup
    raise FieldError(

Exception Type: FieldError at /admin/names/personlocation/
Exception Value: Related Field got invalid lookup: icontains
gjost commented 1 year ago

Fixed in develop branch commit 15647e9. That's the good news.

The bad news is that the error was caused by foreign key field facility being in the list of searchable fields for Location, and the foreign key field location for PersonLocation. I means that when you do searches on those objects you are not searching on i.e. facility names in Location or location cities/states or people names in PersonLocation.