Получение нескольких связанных объектов из 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 с объектами Template.
Приветствую, Олег
Спасибо моему коллеге Дмитрию Якуткину, у которого нет аккаунта на stackoverflow:
Ответ:
Template.objects.filter(document__shareddocument__workspace="1")