Django queryset排除空外键集

Django queryset排除空外键集,django,Django,我有以下模型,其中B与a有多对一关系: class A(model.Model): name = models.IntegerField() class B(models.Model a = models.ForeignKey(A, db_column='a_id') 当我在a上使用查询集时,有没有办法排除a中没有B行的行 no_rows_in_b = B.objects.all().select_related('a') 会给你所有的B和A 然后你可以在它们之间循环并

我有以下模型,其中B与a有多对一关系:

class A(model.Model):

    name = models.IntegerField()

class B(models.Model

    a = models.ForeignKey(A, db_column='a_id')
当我在a上使用查询集时,有没有办法排除a中没有B行的行

no_rows_in_b = B.objects.all().select_related('a')
会给你所有的B和A

然后你可以在它们之间循环并输出A

如果要不重复,请执行以下操作:

no_rows_in_b = B.objects.all().distinct('a').select_related('a')
然后:

使用:


使用
distinct()
可以防止重复条目,否则每个
a
对于链接到它的每个
b
都会显示一次。

请注意,如果您想更明确一些,可以这样做:

A.objects.exclude(b__isnull=True).distinct()
使用
exclude
而不是
filter
并使用
True
布尔参数

A.objects.filter(b__isnull=False).distinct()
A.objects.exclude(b__isnull=True).distinct()