Вложенный цикл for в html с использованием django для отображения информации из 2 различных моделей
У меня есть модель под названием Section и модель под названием SectionInfo. У Section есть одно поле, и это имя. Пользователь создает раздел, давая ему имя. SectionInfo имеет внешний ключ section_name, который связывает его с моделью Section. У меня есть несколько других полей внутри SectionInfo, таких как detail, date_created и т.д. Я пытаюсь достичь цели, используя цикл for для отображения названий разделов, которые уже были созданы внутри или над некоторыми карточками, которые я установил в html-шаблоне. Затем я хочу использовать вложенный цикл для сбора данных, связанных с названием раздела, которые пользователь вводит в модель SectionInfo. Я могу правильно отображать названия разделов, но проблема заключается в цикле внутри этого цикла. Одна и та же ссылка на детали отображается в каждом разделе, который был создан. Информация должна отображаться только в выбранном разделе, для которого она была сделана. Вот небольшой код, чтобы помочь вам понять, чего я пытаюсь достичь.
{% load bootstrap5 %}
{% load crispy_forms_tags %}
{% load static %}
{% block content %}
{% for i in object %}
{{ i.name}}
<div class="row">
<div class="col-sm-4">
<div class="card">
<div class="card-body">
{% for ii in object_2 %}
<a href="{% url 'manufacturing:section_info_detail' i.id %}">Details</a>
{% endfor %}
</div>
</div>
</div>
</div>
{% endfor %}
{% endblock content %}
Вот что я получаю на экране что отображается
Вот представление, которое используется
def section_info_detail(request, pk):
object = get_object_or_404(Section, id=pk)
object_2 = get_object_or_404(SectionInfo, id=pk)
context = {
'object': object,
'object_2':object_2,
}
return render(request, 'manufacturing/section_info_detail.html', context)
Модели
class Section(models.Model):
name = models.CharField(max_length=30)
def __str__(self):
return self.name
class SectionInfo(models.Model):
section_name = models.ForeignKey(Section, on_delete=models.CASCADE)
detail = models.CharField(max_length=50)
text = models.TextField(max_length=2000)
date_created = models.DateField('Date created', auto_now_add=True)
date_updated = models.DateField('Date updated', auto_now=True)
Forms
class SectionNameForm(forms.ModelForm):
class Meta:
model = Section
fields = [
'name',
]
class SectionInfoForm(forms.ModelForm):
class Meta:
model = SectionInfo
fields = [
'section_name',
'detail',
'text',
]
Если нужна еще какая-либо информация, сообщите. Заранее спасибо
<div class="row">
{% for object in object_list %}
<div class="col-sm-4">
<div class="card">
<div class="card-header">
<h1><strong>{{ object.name }}</strong></h1>
<hr>
</div>
<div class="card-body">
<div class="row">
{% for info in object.section_infos.all %}
<ul id="list">
<li>{{ info.date_created }}</li> |
<li><a href="{% url 'manufacturing:section_info_detail' info.id %}">{{ info.detail|truncatechars:20 }}</a></li>
<hr>
</ul>
{% endfor %}
</div>
</div>
</div>
</div>
{% endfor %}
</div>
Это помогло мне. Итак, в основном моя проблема заключалась в том, что я не проникал достаточно далеко, чтобы получить данные, которые мне нужно было отобразить из шаблона. Также я изменил некоторые вещи в своих моделях и создал manyTomany и сквозное поле