Django REST框架范围过滤器

编程入门 行业动态 更新时间:2024-10-10 11:29:50
本文介绍了Django REST框架范围过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

如何在Django REST Framework中对日期和数字进行范围过滤?其他过滤器(lt,gt等)也可以正常工作。我尝试了许多变体,例如:

How can I do a range filter for dates and number in Django REST Framework? Other filters (lt, gt etc.) work fine. I tried many variants such as:

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中,当我单击底部的过滤器时出现字段,然后url看起来像:

In the browsable api there are to fields when I click on bottom "Filters", Then url looks like:

/orders/?created_at__range_0=2017-05-22&created_at__range_1=2017-05-22

,它不起作用。我需要类似的东西

and it doesn't work. I need something like

/orders/?created_at__range=2017-05-22,2017-05-24

并与整数相同:

/orders/?total_price__range=1000,2000

它被描述为此处。

我在做什么错了?

推荐答案

首先,您获得了总价作为您的字段名称,但您的URL上显示 total_cost 。

First, you've got total_price as your field name but you're URL says total_cost.

第二,删除 __ range 后缀。任何带有 __ 的内容都是Django过滤的一部分。例如,如果您在Django中查询的模型的值大于您要执行的操作:

Second, remove the __range suffix from your filter names. Anything with __ is part of the Django filtering. For example, if you were querying a model in Django for a value greater than something you'd do:

MyModel.objects.filter(price__gte=50)

请注意 __ gte 后缀;这就是Django进行过滤修饰符的方式。因此您的类应该是这样的:

Note the __gte suffix; That's how Django does filter modifiers. So your class should be something like:

class OrderFilter(filters.FilterSet): total_price = filters.RangeFilter(name='total_price') # ...

然后您可以在该字段在查询中。

Then you can apply range filtering on that field in the query.

更多推荐

Django REST框架范围过滤器

本文发布于:2023-10-12 04:11:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1483685.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:过滤器   框架   Django   REST

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!