ash*_*ash 2 python django django-filters django-rest-framework
我正在尝试使用以下方法编写自己的自定义过滤器类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
Run Code Online (Sandbox Code Playgroud)
在模型中,由于我没有该字段custom_field,因此会出现错误:TypeError: 'Meta.fields' must not contain non-model field names: custom_field
问题:是否可以使用 Django Filterset 定义我自己的自定义查询(非模型字段名称)?
您可以定义任意函数来进一步过滤查询集。例如:
\nclass MyFilterSet(FilterSet):\n custom_field = CharFilter(method='filter_not_empty')\n\n def filter_custom_field(queryset, name, value):\n return queryset.filter(… some filtering …)\n\n class Meta:\n model = Model\n fields = ['custom_field']Run Code Online (Sandbox Code Playgroud)\n因此,在这里我们定义了一个CharFilterforcustom_field来解析一个字符串。通过 `method='filter_not_empty',我们引用将被调用的方法。
调用此方法时需要使用queryset需要过滤的 ,name是过滤器字段的名称(这里是custom_field,但如果您愿意,您可以对多个过滤器集字段使用相同的方法)和值。
该方法应该返回一个QuerySet经过过滤的\xe2\x80\xa6 some filtering \xe2\x80\xa6
| 归档时间: |
|
| 查看次数: |
9006 次 |
| 最近记录: |