【问题标题】:Django-filter field name is a python builtin keywordDjango-filter 字段名称是一个 python 内置关键字
【发布时间】:2019-12-27 06:13:38
【问题描述】:
我正在尝试使用 DRF 和 django-filter 重建旧版 API。其中一个字段名称是from,但是
from = DateTimeFilter(field_name="created_dt", lookup_expr="gte")
不是有效的 Python。我可以命名变量吗
from_ = DateTimeFilter(...)
但仍将 API 参数作为?from= 公开给用户?
【问题讨论】:
标签:
django
django-rest-framework
django-filter
【解决方案1】:
重写 FilterSet 类的 __init__() 方法
from django_filters import rest_framework as drf_filters
class FooFilterSet(drf_filters.FilterSet):
foo = drf_filters.CharFilter() # some random field
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.filters["from"] = drf_filters.DateTimeFilter(field_name="created_dt", lookup_expr="gte")
class Meta:
model = Foo
fields = ('foo', 'from')