我有以下模型,其中B与A具有多对一关系:
class A(model.Model):
name = models.IntegerField()
class B(models.Model
a = models.ForeignKey(A, db_column='a_id')
当我在A上使用查询集时,有没有办法排除A中没有B行的行?
答案 0 :(得分:18)
答案 1 :(得分:1)
no_rows_in_b = B.objects.all().select_related('a')
将为您提供A&#39的所有B
然后你可以循环浏览它们并输出A
如果你想要不重复:
no_rows_in_b = B.objects.all().distinct('a').select_related('a')
然后:
for rec in no_rows_in_b:
print(rec.a)
答案 2 :(得分:0)
请注意,如果您想更明确,可以执行以下操作:
A.objects.exclude(b__isnull=True).distinct()
使用exclude
代替filter
并使用True
布尔arg。