0
如何在Django REST框架中爲日期和數字執行範圍過濾器?其他過濾器(lt,gt等)工作正常。我試過很多變種,如:Django REST框架範圍過濾器
import rest_framework_filters as filters
class OrderFilter(filters.FilterSet):
total_price__range = filters.RangeFilter(name='total_price')
created_at__range = filters.DateFromToRangeFilter(name='created_at')
....
class Meta:
model = Order
fields = {
'created_at__range': ['__all__'],
'total_price__range': ['__all__'],
...
}
class OrderViewSet(BaseViewSet, viewsets.ModelViewSet):
filter_class = OrderFilter
....
在瀏覽的API還有當我點擊底部的「過濾器」字段,然後鏈接看起來像:
/orders/?created_at__range_0=2017-05-22&created_at__range_1=2017-05-22
,它不工作。我需要這樣的東西
/orders/?created_at__range=2017-05-22,2017-05-24
和相同的整數:
/orders/?total_price__range=1000,2000
它被描述here。
我在做什麼錯?
謝謝你這麼快的回覆和修改。沒有'total_cost',只有'total_price',我的錯誤。現在我試過了: 'total_price = filters.RangeFilter(name ='total_price')' 但是在這種情況下可以只用params做請求,這是行不通的。 '/命令/ total_price_0 = 1000&total_price_1 = 5000' 可以做這樣的要求:? '/命令/ total_price_range = 1000,5000'? –
https://github.com/philipn/django-rest-framework-filters#caveats--limitations - 這裏描述了爲什麼它desnt'作品...可能sollution:「使用基於CSV的過濾器,如從那些衍生BaseCSVFilter/BaseInFilter/BaseRangeFilter「我該如何使用它? –