gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:37:53 27 4
gpt4 key购买 nike

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

例如,

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

username 字段提供了一个exact 查找,等同于此...

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.]
}

最佳答案

重写 FilterSet 类的 get_fields(...) 类方法为,

import django_filters as filters
# If you are using DRF, import `filters` as
# from django_filters import rest_framework as filters


class AnyModelFilter(filters.FilterSet):
class Meta:
model = AnyModel
fields = '__all__'

<b>@classmethod
def get_fields(cls):
fields = super().get_fields()
for field_name in fields.copy():
lookup_list = cls.Meta.model._meta.get_field(field_name).get_lookups().keys()
fields[field_name] = lookup_list
return fields</b>

关于python - 使用 django-filter,有没有一种快速的方法来支持所有可能的字段查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60425259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com