Есть две модели.
class Stage(models.Model):
stageNumber = models.IntegerField()
stageName = models.CharField()
beginingDate = models.DateField()
endDate = models.DateField()
sportsmens = models.ManyToManyField(Person )
def __str__(self):
return f'{self.stageName}'
class Person(models.Model):
class Meta:
abstract = True
JobNameFull = models.CharField()
JobNameShort = models.CharField()
sportRank = models.ForeignKey(SportRank,)
personFIO = models.CharField()
def __str__(self):
return f'{self.personFIO}'
Вьюха реализована через ListView:
class StageList(ListView):
model = Stage
def get_queryset(self):
return Stage.objects.all()
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['page_title'] = 'Сведения по этапам'
return context
Шаблон html:
<table id="example" class="table display table-bordered table-striped">
<thead>
<tr>
<th>Порядковый номер этапа</th>
<th>Наименование этапа</th>
<th>Начало этапа</th>
<th>Окончание этапа</th>
<th>Участвующие спортсмены</th>
</tr>
</thead>
<tbody>
{% for item in object_list %}
<tr>
<td>{{ item.stageNumber }}</td>
<td>{{ item.stageName }}</td>
<td>{{ item.beginingDate }}</td>
<td>{{ item.endDate }}</td>
<td>{{ item.??? }}</td>
</tr>
{% endfor %}
</tbody>
</table>
Спортсменов на каждом этапе может быть сколько угодно. Сломал голову пытаясь обратиться к промежуточной таблице созданной django для связи many-to-many между моими моделями. И как сделать вывод в шаблон. Предпологаю что метод join() должен помочь и в одну ячейку таблицы можно будет вывести текст содержащий несколько фамилий. Но не получается.
Есть идеи как сделать?