Skip to content

AllLookupsFilter does not work on related fields #84

Closed
@rpkilby

Description

@rpkilby

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions