带否定的过滤中介多个django

带否定的过滤中介多个django,django,django-models,Django,Django Models,这个问题涉及: 我想提出两个问题: 选择所有成分不含草莓和牛奶的产品 选择所有成分不含草莓或牛奶的产品 在这种情况下,我完全不知所措。关于您的链接问题,您可以使用带有.exclude()的Q对象,而不是.filter()。您还可以通过使用波浪号(~)作为前缀来否定Q对象: 不含草莓和牛奶成分的产品 .filter( ~Q(product__ingredients__ingredient__name='strawberry') & ~Q(product__ingredi

这个问题涉及:

我想提出两个问题:

  • 选择所有成分不含草莓和牛奶的产品
  • 选择所有成分不含草莓或牛奶的产品

在这种情况下,我完全不知所措。

关于您的链接问题,您可以使用带有
.exclude()
的Q对象,而不是
.filter()
。您还可以通过使用波浪号(~)作为前缀来否定Q对象:

不含草莓和牛奶成分的产品

.filter(
    ~Q(product__ingredients__ingredient__name='strawberry') &
    ~Q(product__ingredients__ingredient__name='milk')
)
不含草莓或牛奶成分的产品

.filter(~Q(product__ingredients__ingredient__name__in=['strawberry', 'milk']))
.filter(~Q(product__ingredients__ingredient__name__in=['strawberry', 'milk']))