使用django-filter,有一种快速的方法来支持所有可能的字段查找?

问题描述 投票:0回答:1

django-filter使您可以轻松声明模型的可过滤字段。

例如,

class UserFilter(django_filters.FilterSet):
    class Meta:
        model = User
        fields = ['username']

exact字段提供一个username查找,它等效于此...

class UserFilter(django_filters.FilterSet):
    class Meta:
        model = User
        fields = {
            'username': ['exact']
        }

我正在寻找一种方法来支持给定字段的所有可能的查找过滤器,这样我就不必这样做:

class UserFilter(django_filters.FilterSet):
    class Meta:
        model = User
        fields = {
            "username": ["exact", "iexact", "contains", "icontains", "startswith", ..., etc.]
        }
python django django-filter
1个回答
0
投票

您可以通过django lookup up api获得该字段的所有可能的查询

lookups_list = []

lookups = User._meta.get_field("username").get_lookups()
    for lookup in lookups:
        lookups_list.append(lookup)

lookups_list的结果:

[“精确”,“ iexact”,“ gt”,“ gte”,“ lt”,“ lte”,“中”,“包含”,'contains','startswith','istartswith','endswith','iendswith','range','isnull','regex','iregex']

因此您可以在FilterSet中使用它

© www.soinside.com 2019 - 2024. All rights reserved.