如何在字段上过滤一组值

问题描述 投票:0回答:2

我有一个名为产品的模型。 类别属于此模型。现在,我可以使用值过滤此部分字段。实际上我想为same fieldmultiple values

过滤

示例:如果我使用电话(属于一个类别)进行过滤,则可以正常工作但是对于此部分字段,我需要按phonecase

进行过滤

过滤器

class ProductFilter(filters.FilterSet):
    min_price = filters.NumberFilter(field_name="price", lookup_expr='gte')
    max_price = filters.NumberFilter(field_name="price", lookup_expr='lte')

    class Meta:
        model = Product
        fields = ['category',
                  'min_price', 'max_price'
                  ]

查看

class ProductListView(generics.ListAPIView):
    permission_classes = [IsAuthenticated]
    queryset = Product.objects.all()
    serializer_class = ProductListSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filter_class = ProductFilter

我该怎么做?有人可以帮我吗?

django python-3.x django-rest-framework serializer
2个回答
0
投票

定义CharFilter并指定lookup_expr参数,

class ProductFilter(filters.FilterSet):
    min_price = filters.NumberFilter(field_name="price", lookup_expr='gte')
    max_price = filters.NumberFilter(field_name="price", lookup_expr='lte')
    category = filters.CharFilter(lookup_expr='in')

    class Meta:
        model = Product
        fields = ['category', 'min_price', 'max_price']

0
投票

从django.db.models导入Q

如果您希望或您的条件。

queryset = User.objects.filter(Q(first_name__startswith ='R')| Q(姓氏__startswith ='D'))

如果您希望与您的条件相符。

queryset = User.objects.filter(Q(first_name__startswith ='R')和Q(last_name__startswith ='D'))

© www.soinside.com 2019 - 2024. All rights reserved.