Django: получение объектов с идентификаторами из набора запросов - PullRequest
0 голосов
/ 04 июля 2018

У меня есть эти модели (названия изменены):

class Blog(models.Model):
    created_dtm = models.DateTimeField()
    updated_dtm = models.DateTimeField()
    title = models.CharField(max_length=200, null=True, blank=True)
    creator = models.ForeignKey(Authors, on_delete=models.CASCADE, null=True, blank=True)

class BlogAuthor(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    class Meta:
        unique_together = ('blog', 'author')

и мне нужно получить все блоги (и их данные), в которых участвует автор. Проблема в том, что у каждого блога может быть несколько авторов.

Теперь я могу получить набор запросов идентификаторов блога, используя это:

BlogAuthor.objects.filter(author=request.user).values_list('blog_id', flat=True)

, а затем попробуйте получить каждый блог один за другим, используя цикл for, но возможно ли получить список блогов одним запросом?

1 Ответ

0 голосов
/ 04 июля 2018

Просто используйте обратное отношение :

Blog.objects.filter(blogauthor__author=request.user)
...