2013-04-18 58 views
1

教程說:指定FilterSet Django的休息框架

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是不是在我模型,但我需要創建一個新參數。 (這是一個例子) 真的我需要過濾日期。

回答

4

查看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'] 
+1

這適用於Django過濾器。但是'OrderingFilter'呢?當我在'FilterSet'中使用'order_by =('-name',)'時,它給了我同樣的錯誤。這是字段: 'name = django_filters.CharFilter(name ='full_name')' – norbertpy