【问题标题】:Specifying a FilterSet for Django-rest-framework为 Django-rest-framework 指定 FilterSet
【发布时间】:2013-04-10 22:37:24
【问题描述】:

教程说:

class ProductFilter(django_filters.FilterSet):
    min_price = django_filters.NumberFilter(lookup_type='gte')
    max_price = django_filters.NumberFilter(lookup_type='lte')
    class Meta:
        model = Product
        fields = ['category', 'in_stock', 'min_price', 'max_price']

但是当我尝试这样做时,我得到一个错误:

FieldError: Cannot resolve keyword u'min_price' into field. Choices are: cantidad, datetime, enlace, id, id_fila, nivel

min_price 不在我的模型中,但我需要创建一个新参数。 (这是一个例子) 我真的需要过滤日期。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    请参阅django-filter documentation

    由于您的 min_pricemax_price 过滤器与它们引用的模型字段的名称不同,因此您需要提供 name 参数。

    class ProductFilter(django_filters.FilterSet):
        min_price = django_filters.NumberFilter(name='price', lookup_type='gte')
        max_price = django_filters.NumberFilter(name='price', lookup_type='lte')
        class Meta:
            model = Product
            fields = ['category', 'in_stock', 'min_price', 'max_price']
    

    【讨论】:

    • 这适用于 django-filter。但是OrderingFilter 呢?当我在FilterSet 中使用order_by = ('-name',) 时,它给了我同样的错误。这里是字段:name = django_filters.CharFilter(name='full_name')
    猜你喜欢
    • 2021-05-23
    • 1970-01-01
    • 2012-07-10
    • 2020-09-30
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多