我有以下多对一的关系:
class Adult(models.Model):
name = models.CharField(max_length=200)
class Child(models.Model):
name = models.CharField(max_length=200)
adult = models.ForeignKey(Adult)
我正在尝试找到一种方法来获取至少有一个孩子的成年人的QuerySet,然后进一步对该QuerySet应用过滤器。在SQL中,为了获得至少有一个孩子的成人id列表,我可以这样做:
select distinct(child.adult_id) from child;
但是在django尝试同样的事情我遇到了麻烦。我尝试了以下内容,只做了一些修改:
adult_ids = Child.objects.values_list('adult__id').distinct()
adults_with_children = Adult.objects.filter( id__in=adults )
但是我一直在生成一个sql查询,该查询涉及第一行中与成人表的连接。我怎样才能找到以更快/更好的方式生育至少一个孩子的成年人?提前谢谢。
答案 0 :(得分:0)
你试过这个吗,
adults_with_alteast_one_child = Adult.objects.filter(child__isnull=False)
这将排除与Adults
有空关系的所有Child
。
有关详细信息,请阅读isnull