从Django ORM中获取多个相关对象



我在Django中有这样的模型:

from django.db import models

class Document(models.Model):
name = models.CharField(max_length=256)

class Template(models.Model):
name = models.CharField(max_length=256)
document = models.ForeignKey(Document, on_delete=models.CASCADE)

class SharedDocument(models.Model):
workspace = models.CharField(max_length=256)
document = models.ForeignKey(Document, on_delete=models.CASCADE)

我需要在SharedDocument中通过工作区获得模板列表。

我正在做这个查询:

>>> shared_documents = SharedDocument.objects.filter(workspace='1').prefetch_related('document')
>>> [shared_document.document.template_set.get() for shared_document in shared_documents]

但是从我的角度来看,它看起来有点丑。所以问题是:"有没有可能通过形成没有这部分的查询:[shared_document.document.template_set.get() for shared_document in shared_documents]"来做我想做的事情?

澄清:作为结果,我想有一个列表/QuerySet与模板对象。

问候,奥列格

感谢我的同事dmitry Yakutkin,他在stackoverflow上没有帐户:

答案是:

Template.objects.filter(document__shareddocument__workspace="1")

最新更新