带有 django autocomplete-light 的 django-filter

django-filter with django autocomplete-light

我一直在分别使用简单的 DAL 和 django-filter,但我在将 DAL 与 django-filter 结合使用时遇到了问题。

我已阅读此页:

但我还是很困惑。 我有如下过滤器 class,我想在 "devname" 字段上使用 DAL:

class DevListFil(django_filters.FilterSet):
    devname = django_filters.CharFilter(name='devname',lookup_expr='icontains')
    sn      = django_filters.CharFilter(name='sn',lookup_expr='icontains')
    devtype = django_filters.CharFilter(name='devtype',lookup_expr='icontains')
    class Meta:
        model = Device
        fields = ['devname','sn','devtype']

任何帮助或指向正确的方向请。

过滤器只是对常规 Django 表单字段的抽象。任何不适用于过滤器的参数都会传递给基础字段。在这种情况下,您需要做的就是将自动完成小部件与过滤器连接起来。可能是这样的:

devname_url = '...'

class DevListFil(django_filters.FilterSet):
    devname = django_filters.CharFilter(name='devname', lookup_expr='icontains', widget=autocomplete.ModelSelect2(url=devname_url))
    sn      = django_filters.CharFilter(name='sn', lookup_expr='icontains')
    devtype = django_filters.CharFilter(name='devtype', lookup_expr='icontains')

    class Meta:
        model = Device
        fields = ['devname', 'sn', 'devtype']