我有一个餐厅表,其中包含诸如cuisine\u type和outlet\u type等字段,其中cuisine\u type有一个cuisine表(pk,cuisine\u type),outlet\u type有一个outlet表(pk,outlet\u type)。有更多的领域,如素食主义者友好,可负担性等。用户可以自由选择他们想要强制转换过滤器的任何字段,我不希望创建字段的组合来处理每个请求。那太疯狂了。你知道吗
用户可以对POST请求正文中的任何字段应用筛选器,如下所示:
{
"outlet_type": 1,
"cuisine_type": 2,
...
}
视图将在筛选后返回餐厅列表
class RestaurantList(APIView):
def post(self, request, format=None):
filter = dict(request.data)
retaurants = Restaurant.objects.filter(**filter)
serializer = RestaurantSerializer(retaurants, many=True)
return Response(serializer.data)
但是,当一个字段下有多个选项时,例如,他们想要过滤多个类型,如1和2,那么请求主体必须添加\u才能使其工作。你知道吗
{
"outlet_type": 1,
"cuisine_type__in": [1, 2],
...
}
有更好的方法吗?我希望我们不需要更改键名,只需将值设置为数组,例如:
{
"outlet_type": 1,
"cuisine_type": [1, 2],
...
}
您应该尝试使用django-filter库进行筛选。它的使用非常简单,并提供了一系列过滤选项。你知道吗
对于您的案例,您可以从以下内容开始:
相关问题 更多 >
编程相关推荐