首页 > 解决方案 > Django-filter 字段名称是一个 python 内置关键字

问题描述

我正在尝试使用 DRF 和django-filter重建旧版 API 。字段名称之一是from, 但是

from = DateTimeFilter(field_name="created_dt", lookup_expr="gte")

不是有效的 Python。我可以命名变量吗

from_ = DateTimeFilter(...)

但仍然?from=向用户公开 API 参数?

标签: djangodjango-rest-frameworkdjango-filter

解决方案


覆盖类的__init__()方法FilterSet

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')

推荐阅读