Допустим, у меня есть следующие модели:
class Publication(models.Model):
title = models.CharField(max_length=30)
class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication)
upload = models.ForeignKey(related_name='x1', Uploads)
class Uploads(models.Model):
topic = models.CharField(max_length=100)
Я хочу выбрать все статьи указанного c загрузить топи c вместе с их публикацией заголовком . Таким образом, мой результат должен быть:
<QuerySet [
{'id': 1, 'headline': 'headline1', 'publications': 'publication title 1'},
{'id': 2, 'headline': 'headline2', 'publications': 'publication title 2'},
]
В настоящее время у меня есть это:
(
Article.objects.filter(upload__topic='sports')
.values('id', 'headline', 'publications')
)
, что дает мне следующее:
<QuerySet [
{'id': 1, 'headline': 'headline1', 'publications': 1},
{'id': 2, ''headline': 'headline2', 'publications': 2},
]
Я знаю, что могу oop поверх QuerySet
и для каждой публикации запускайте другой запрос БД к таблице Publication
, чтобы получить соответствующий заголовок, но мне интересно, есть ли лучший способ сделать это. Может быть, с помощью одного запроса?