Closed
Description
In Django 1.9+, using AllLookupsFilter
on a related field will use the incorrect set of lookups. It seems to use the lookups of the underlying AutoField instead of the lookups for the ForeignKey. For example, changing the test NoteFilterWIthAll
FilterSet to:
class NoteFilterWithAll(FilterSet):
title = AllLookupsFilter(name='title')
author = AllLookupsFilter()
class Meta:
model = Note
Raises this error:
ImportError: Failed to import test module: tests.test_filterset
Traceback (most recent call last):
File "lib/python2.7/unittest/loader.py", line 254, in _find_tests
module = self._get_module_from_name(name)
File "lib/python2.7/unittest/loader.py", line 232, in _get_module_from_name
__import__(name)
File "tests/test_regressions.py", line 25, in <module>
from .testapp.filters import (
File "tests/testapp/filters.py", line 20, in <module>
class NoteFilterWithAll(FilterSet):
File "rest_framework_filters/filterset.py", line 67, in __new__
f = new_class.filter_for_field(field, filter_.name, lookup_expr)
File ".env/lib/python2.7/site-packages/django_filters/filterset.py", line 422, in filter_for_field
f, lookup_type = resolve_field(f, lookup_expr)
File ".env/lib/python2.7/site-packages/django_filters/utils.py", line 87, in resolve_field
final_lookup = lhs.get_lookup(name)
File ".env/lib/python2.7/site-packages/django/db/models/expressions.py", line 291, in get_lookup
return self.output_field.get_lookup(lookup)
File ".env/lib/python2.7/site-packages/django/db/models/fields/related.py", line 693, in get_lookup
raise TypeError('Related Field got invalid lookup: %s' % lookup_name)
TypeError: Related Field got invalid lookup: regex