django 如何查找QuerySet中的元素

3npbholx  于 2022-11-18  发布在  Go
关注(0)|答案(2)|浏览(143)

如果我有两个模型:

Model_1.objects.all()

Model_2.objects.all()

Model_1包含所有元素,Model_2包含这些元素的一部分。
如何找到包含在Model_1中但不包含在Model_2中的元素?
我试探着:

Model_1.objects.exclude(pk=Model_2.objects.order_by('pk'))

它不工作。

nkoocmlb

nkoocmlb1#

通常,2个模型代表两个不同的实体。但是如果您想根据Model_2的某些属性筛选Model_1,请根据您的要求使用exclude和filter。
模型_1.对象.排除(id__in=模型_2.对象.全部())模型_1.对象.过滤器(id__in=模型_2.对象.全部())

w80xi6nr

w80xi6nr2#

您可以使用**in[Django doc.]**,例如:

Model_1.objects.exclude(pk__in=[obj.pk for obj in Model_2.objects.all()])

相关问题