因此,我正在为我的模型创建一个自定义筛选器,我希望该筛选器中的所有字段不使用“精确”而是“包含”,但我不想手动添加所有字段。我正试着做这样的事情:
from django_filters import FilterSet
from polls.models import Question, Choice
from django_filters import rest_framework
class ChoiceFilter(FilterSet):
for field in Choice._meta.get_fields():
field = rest_framework.CharFilter(lookup_expr='icontains')
#question = rest_framework.CharFilter(lookup_expr='icontains') #this works want to generalize this
class Meta:
model = Choice
fields = '__all__'
所以第二行有效,但是我的for循环不行,我的过滤器使用'exact'而不是'contains'
您可以创建一个自定义的}:
FilterSet
类,该类重写get_fields
方法,将查找从exact
更改为{现在您只需使
^{pr2}$ChoiceFilter
从该类继承:请记住,将
__all__
用于字段被认为是危险的。在相关问题 更多 >
编程相关推荐