【发布时间】:2021-07-30 14:38:45
【问题描述】:
我正在尝试使用django_filters 编写我自己的自定义过滤器类,如下所示:
from django_filters import rest_framework as filters
class FooFilter(filters.FilterSet):
class Meta:
model = Model
fields = ['custom_field',]
class Foo():
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = FooFilter
在模型中,由于我没有字段custom_field,它会给出错误:TypeError: 'Meta.fields' must not contain non-model field names: custom_field
问题:是否可以使用 Django Filterset 定义我自己的非模型字段名称的自定义查询?
【问题讨论】:
-
您的
Model中的custom_field是什么? -
只是一个随意的名字。我想在发出请求时将此“自定义名称”用作查询参数,但此名称不是模型中的字段。
-
好吧,如果它不是模型中的字段,那么使用它是没有意义的。如果你想制作一个额外的过滤字段,你需要先定义这样的字段并实现一个过滤查询集的方法。
-
也许你应该看看
method参数django filter doc 并在class meta上方添加custom_field。 -
谢谢,有道理。但是我可以定义这个并使用 FooFilter 类中的自定义查询集实现这个方法吗? @WillemVanOnsem
标签: python django django-rest-framework django-filters