Ris*_*waj 4 python django django-orm django-queryset django-2.2
我有一个查询,我想排除空公司以及特定用户电子邮件。
Demo.objects.all().exclude(company__isnull=True, email="abc@gmail.com")
Run Code Online (Sandbox Code Playgroud)
但似乎上面的排除不适用于多个参数,我的返回查询集中有 email="abc@gmail.com" 。
如果我尝试使用单个参数进行上述查询,它会起作用。但不适用于多个参数。任何人都知道如何在 django except 中传递多个参数?
谢谢
你可以这样做,但然后你说排除所有Demo具有company__isnull=True, 和 as 的email 'abc@gmail.com's 。因此,这意味着如果仅满足两个条件之一,则不排除它。
您可以使用Q对象,例如:
from django.db.models import Q
Demo.objects.exclude(
Q(company__isnull=True) |
Q(email='abc@gmail.com')
)Run Code Online (Sandbox Code Playgroud)
但它可能更具可读性:
Demo.objects.exclude(
company__isnull=True
).exclude(
email='abc@gmail.com'
)Run Code Online (Sandbox Code Playgroud)
company因此,这将排除is的项目NULL 并email排除is的项目'abc@gmail.com'。所以这里我们从至少满足一个条件的那一刻起就排除它。
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |