如何过滤查询django中的2个Q条件?

阿吉尔·帕达什

所以,我有一个品牌名称是传入品牌之一的所有手机的列表。将输入所需的品牌名称。条目数未知,可能为空。如果输入为空,则必须返回所有手机的列表。

模型:

from django.db import models


class Brand(models.Model):
    name = models.CharField(max_length=32)
    nationality = models.CharField(max_length=32)

    def __str__(self):
        return self.name


class Mobile(models.Model):
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
    model = models.CharField(max_length=32, default='9T Pro', unique=True)
    price = models.PositiveIntegerField(default=2097152)
    color = models.CharField(max_length=16, default='Black')
    display_size = models.SmallIntegerField(default=4)
    is_available = models.BooleanField(default=True)
    made_in = models.CharField(max_length=20, default='China')

    def __str__(self):
        return '{} {}'.format(self.brand.name, self.model)

询问:

from django.db.models import F, Q


def some_brand_mobiles(*brand_names):
    query = Mobile.objects.filter(Q(brand__name__in=brand_names) | ~Q(brand__name=[]))
    return query

如果输入为空,将返回所有手机的列表,但我不能使用 *brand_names 返回列表。

例如

query = Mobile.objects.filter(Q(brand_name_in=['Apple', 'Xiaomi']))
return query

query = Mobile.objects.filter(~Q(brand__name=[]))
    return query

这两个条件都可以单独使用示例,但它不会使用我编写的函数检查这两个条件。如何解决?

威廉·范·翁塞姆

brand_names如果它包含至少一个元素,只需检查和过滤器的列表更简单

def some_brand_mobiles(*brand_names):
    if brand_names:
        return Mobile.objects.filter(brand__name__in=brand_names)
    else:
        return Mobile.objects.all()

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django 使用 Q 过滤查询

Django添加Q过滤器以在相关对象存在时进行查询,条件查询

Django中的Q查询

Django如何在一个查询中基于嵌套的多对多关系过滤查询集

如何在Django中创建基于单个条件过滤多个字段的查询集?

如何按 2 个条件过滤列表?

单个查询集过滤器中的 3 个 OR 条件

Django 模型中 Q() for 和两个条件的问题

如何使用 django 中的其他查询过滤查询

如何在mongoose的查询中添加条件过滤器?

如何根据条件过滤掉 SQL 查询中的值

如何使用js中的箭头函数按2个条件过滤对象数组?

如何在具有 2 个条件的 reactJS 中过滤数组

如何从文档中的列表中查询,其中 2 个条件必须同时为真

Django过滤器-条件查询

如何正确过滤 django OR 查询

如何在Django中按日期范围过滤查询对象?

如何在Django中动态组成OR查询过滤器?

如何在Django模板中执行查询过滤

如何在Django查询中执行OR过滤器?

如何在Django中基于Datefield过滤查询集?

如何在Django查询中过滤外键对象?

如何在 django rest 框架中按实例过滤查询?

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

如何在基于 2 个条件相关任务的工作项查询中返回 PBI

如何执行2个条件查询并在单个表中检索数据

使用Django的Q查询过滤多对多关系

Django查询过滤器参数和Q

如何定义一个过滤器,为 Spring Data 中的所有查询附加一个额外的 where 条件