【发布时间】:2015-08-12 20:42:05
【问题描述】:
当我有相关字段时,我将如何在 Django 中进行not in 过滤器?
class Publisher(Model):
pass
class Author(Model):
name = models.CharField(...)
publisher = models.ForeignKey(Publisher)
我会写:
Publisher.objects.filter(author__name__in=XXX)
这不起作用:
Publisher.objects.filter(author__name__not_in=XXX)
虽然Django equivalent of SQL not in 声称您可以使用exclude,但这是不正确的:
Publisher.objects.exclude(author__name__in=XXX)
XXX 是一个名称列表。
澄清我想得到什么:我想找到所有作者不在该列表中的出版商。注意:这些出版商可能在该列表中也有作者。
假设我有两个出版商 A、B 和以下出版商的作者:
A: Alex, Bob, Greg
B: Alex, Greg
xxx 是 ['Alex', 'Greg']
我想查找作者不在该列表中的任何出版商。在这种情况下,应该返回 A,因为 A 的作者 Bob 不在该列表中。
【问题讨论】:
标签: django django-queryset django-orm django-filter