DRF:在一个请求中过滤多个字段

发誓

我必须实现一组过滤器(见图)。我的代码适用于 1 个过滤器,例如

http://127.0.0.1:8000/api/constructions?field=developer&value=1 -- 按 id =1 的开发人员过滤

我想在一个请求中按多个过滤器进行过滤。我可以使用这样的东西

  1. http://127.0.0.1:8000/api/constructions?field=field1_field2&value=value1_value2
  2. 拆分 field1_field2 --> [field1, field2] 等等(不完美)

有没有更好的方法来解决我的问题?

在此处输入图片说明

视图.py

class ConstructionView(viewsets.ModelViewSet):
    serializer_class = ConstructionSerializer
    queryset = Construction.objects.all()
    pagination_class = BasePagination

    def list(self, request):
        field = request.GET.get('field', None)
        value = request.GET.get('value', None)
        if field is not None and value is not None:
            queryset = Construction.objects.filter(**{field:value})
        else:
            queryset = Construction.objects.all()
        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = ConstructionSerializer(page, many=True)
            return self.get_paginated_response(serializer.data)
        else:
            serializer = ConstructionSerializer(queryset, many=True)
            return Response(serializer.data, status=status.HTTP_200_OK)
克里姆·比姆

如果你有一个清单,query_params你可以使用这种方法。您可以检查您的值query_params是列表还是字符串并将其应用于过滤器。<fieldname>__in适用于列表。

custom_filter = {'field__in': request.query_params.get('field'), 'value__in': request.query_params.get('value')}
queryset = Construction.objects.filter(**custom_filter )

也许djangorestframework-queryfields可以帮助您完成一些常见的工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

DRF:允许GET请求中的所有字段,但仅将POST限制为一个字段

如何在 django-filter 中的多个字段上使用一个查找字段过滤查询集

在DRF的字段级别验证中获取另一个字段的值

Django 一个字段中的多个文件

在一个字段中存储多个参考

在一个 rethinkdb 查询中聚合多个字段

如何使用 FilterUserMixin 过滤 Django 中的一个字段或另一个字段

Firestore云功能在一个字段中添加多个字段

Angular 6仅需要多个字段中的一个字段

如何在SQL查询的一个字段中求和多个字段?

如何使用一个请求DRF创建多个对象

过滤对象数组,其中对象中的一个字段为数组

如何将序列化器中的模型queryset打包到一个字段DRF中?

如何从Sqlite请求中获取一个字段值?

在Django rest框架中根据请求自动计算并返回一个字段

如何只更新正文请求中的一个字段?

在DRF中过滤字段的多个值

使用一个查询更新一列中的多个字段

仅使用不同 ArrayList 中的一个字段搜索具有多个字段的 ArrayList

如何使用linux comand awks在多个字段文件中拆分一个字段文件?

MySQL查询以在多表中的一个字段中显示多个值

SQL - 在一个表中而不是另一个表中的位置(多个字段)

MongoDB - 多个字段,可选值,一个查询

grails:一个字段,多个类

SQL - 更新多个字段而不是一个

用多个字段构建一个子弹

用一个查询替换多个字段

使用棉花糖指定一个或多个字段

一个字段有多个外键