Django queryset排除空外键集
我有以下模型,其中B与a有多对一关系: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 然后你可以在它们之间循环并
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()