[英]Django orm: How to annotate a model with a related relation traversing multiple table
可以说我有这个结构
class lvlOne(models.Model):
name = models.CharField(max_length=255)
class lvlTwo(models.Model):
name = models.CharField(max_length=255)
parent = models.ForeignKey(lvlOne, related_name="children")
class lvlThree(models.Model):
name = models.CharField(max_length=255)
parent = models.ForeignKey(lvlTwo)
有没有办法用 lvlThree 的相关管理器注释 lvlOne 的实例,我在想这样的事情
obj = lvlOne.objects.annotate(grandchildren = .... ).get()
obj.children.all() # all related lvlTwo instances as expected from setting related_name
obj.grandchildren.all() # all related lvlThree instances
我尝试过的几件事
我可以根据我的经验分享一些观点。
annotate
中做Subquery
很有帮助。 值得注意的是, annotate
要求返回是单个值,而不是值列表或对象lvlThree
开始并注释相关lvlOne
怎么样?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.