我有以下型号:
class Institution(models.Model):
pass
class Headquarter(models.Model):
institution = models.ForeignKey(Institution, related_name='headquarters')
class Audit(models.Model):
headquarter = models.ForeignKey(Headquarter, related_name='audits')
下面的查询(基本上,如果一个机构至少有一个审计,那么has_visits必须为true:
Institution.objects.annotate(
has_visits=models.Case(
models.When(headquarters__audits=None, then=False),
default=True,
output_field=models.BooleanField()
)
)
问题是,如果一个机构有2个审计,那么查询集将返回重复的行。我想这与SQL级别的连接有关,但我不确定如何纠正它。我找到了这个answer,但我不认为OuterRef是我在我的情况下寻找的。实现这一目标的正确方法是什么?
1条答案
按热度按时间hi3rlvi21#
你可以使用**
Exists
**子查询[Django-doc]:还有一种方法可以帮助你“折叠”副本,例如使用
Max
:但这可能使其可读性更低且效率更低。