我正试图通过Django(3.2)中的过滤来获取所有带有子模型的父记录。
class Parent(models.Modal):
name = models.CharField(max_length=20)
class Child(models.Modal):
parent = models.ForeignKey(Parent, related_name="children",
on_delete=models.CASCADE)
name = models.CharField(max_length=20)
is_working = models.BooleanField(default=True)
level = models.CharField(max_length=1, choices=[(1, 1),
(2, 2), (3, 3), (4, 4), (5, 5)])
就像这些模特一样,我想让所有父母都有没有工作的孩子。我试着像这个Parent.objects.filter(children__is_working=False)
。但是获取那些具有is_working False值的家长。如果父母一方有多个子女类型的记录,因此父查询集也会返回这些父查询集。我的要求是让所有父母带着那些is_working值为False的孩子。
我想你希望那些孩子的父母没有is_working True,所以使用exclude而不是filter:
Parent.objects.exclude(children__is_working=True)