Как получить данные двух моделей в цикле for с фильтром: Django
У меня есть две модели, как показано ниже, модель данных пациента и модель посещений пациента. Я хочу получить список посещений всех пациентов (если они существуют). В файле views.py я передаю данные обеих моделей через get all. Как отфильтровать и показать их в шаблоне с помощью цикла for. Я использую два цикла for, он показывает общее количество пациентов, умноженное на общее количество посещений, что неверно.
class patientprofile(models.Model):
pat_Fname = models.CharField(max_length=100)
pat_Lname = models.CharField(max_length=100, blank=True)
def IntegerField(self):
return self.id
class visits(models.Model):
pat_ID = models.ForeignKey(patientprofile, on_delete=models.CASCADE)
visit_date = models.DateField(blank=False, null=False)
visit_time = models.TimeField(blank=False, null=False)
views.py
@login_requireddef visitslist(request):
patpro=patientprofile.objects.all()
vis=visits.objects.all()
return render(request, 'pmp/visitslist.html', {'vis':vis, 'patpro':patpro})
Шаблон как показано ниже
{% for a in vis %}
<tr>
<td>
{{ a.visit_time }}
</td>
<td>{{ a.visit_date }}</td>
<td>{{ patpro.id }}</td>
<td>{{ patpro.pat_Fname }}</td>
</td>
</tr>
{% endfor %}
Вы можете легко преобразовать его в объект dict
, используя функцию values()
в объекте queryset.
например:
merged_tables_dict = visits.objects.values('visit_date', 'visit_time', 'pat_ID__pat_Fname', 'pat_ID__pat_Lname')
Возвращает список объектов со всеми данными в значениях params
Вы можете прочитать больше об этом Django Docs values