@Gambetto

Как сформировать контекст для шаблона из нескольких связанных таблиц?

Модели: Блог, Раздел, Статья, Автор.
class Blog(models.Model):
    name = models.CharField()

class Section(models.Model):
    name = models.CharField()
    authors = models.ManyToManyField(Author, through='Article')
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)

class Article(models.Model):
    name = models.CharField()
    section = models.ForeignKey(Section, on_delete=models.CASCADE)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

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

Желаемая структура страницы с деталями автора:
Данные автора.
___________________________
Имя блога 1.
  Имя раздела 1.
    Имя статьи 1.
    Имя статьи 2.
  Имя раздела 2.
  ...
Имя блога 2.
  Имя раздела 1.
    Имя статьи 1.
    ...
___________________________

Не могу разобраться, как дополнить контекст для передачи в шаблон, чтобы можно было циклично проходиться по именам блог-раздел-статья, свойственным автору.
{% for blog in blogs %}
    {{ blog.name }}
    {% for section in blog.section_set.all %}
        {{ section.name }}
        {% for article in section.article_set.all %}
            {{ article.name }}

Так выводится всё подряд, а не только данные по конкретному автору.
class DetailView(generic.DetailView):
    model = Author
    template_name = 'author_details.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        blogs = Blog.objects.filter(section__article__author=self.object)
        context['blogs'] = blogs
        return context

Может кто-нибудь подсказать верный подход?
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Gambetto Автор вопроса
Тема натолкнула на мысль https://www.reddit.com/r/django/comments/85i7q7/ho...
Сформировал словари в контексте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы