Можно ли получить всех авторов одним запросом в django

class Author(models.Model):
    name = models.CharField(max_length=50)

class Chapter(models.Model):
    book = models.ForeignKey(Album, on_delete=models.CASCADE)
    author = models.ManyToManyField("Author")

class Book(models.Model):
    author = models.ManyToManyField("Author")

Я пытаюсь показать всех связанных авторов, когда я посещаю детали одного автора. Для этого в настоящее время я делаю следующее:

authors = []
for chapter in Author.objects.get(id=id).chapter_set.all():
    authors.append(chapter.artists.all())

Есть ли другой способ сделать это с помощью djangoORM

Вы можете следовать ManyToManyField отношениям назад в фильтрах, в случае модели Author вы должны быть в состоянии использовать chapter__ для доступа к Chapter.author отношениям

authors = Author.objects.filter(chapter__author_id=id).distinct()
Вернуться на верх