В моем ListView я хочу вернуть весь список объектов из моей модели Publication и вернуть total
из моей модели Budget для включения в ListView с каждым заголовком и общей суммой.
Мои модели:
Приложение публикации
class Publication(models.Model):
title = models.CharField(...)
Приложение бюджета
class Budget(models.Model):
total = models.DecimalField(...)
publication = models.ForeignKey(Publication, ...)
Просмотры: Приложение публикации
class PublicationListView(ListView):
context_object_name = 'publications'
model = Publication
def get_context_data(self, **kwargs):
context = super(PublicationListView, self).get_context_data(**kwargs)
context['publication'] = self.get_queryset()
context['budget'] = Budget.objects.all()
return context
Шаблон: Приложение публикации
<tbody>
{% for pub in publications %}
<tr>
<td><a href="{{ pub.pk }}">{{ pub.title }}</a>
<span class="float-right">
{% for obj in budget %}
{{obj}}
{% endfor %}
</span>
</td>
</tr>
{% endfor %}
</tbody>
В моем шаблоне результаты, которые я получаю, выглядят примерно так:
publication 1 1000 2000 3000
publication 2 1000 2000 3000
publication 3 1000 2000 3000
Но мне нужно:
publication 1 1000
publication 2 2000
publication 3 3000
Я понимаю, почему я возвращаю все объекты бюджета в каждой строке, но я не уверен, как отобразить только правильный бюджет с соответствующей публикацией.
Является ли использование get_context_data()
лучшим вариантом для этого?