#django #django-models #django-views #django-templates #django-filter
#django #django-модели #django-представления #django-шаблоны #django-filter
Вопрос:
Я определил модель под названием Visit. Существует несколько моделей.
В models.py
class Visit(models.Model):
case = models.ForeignKey(Case, on_delete = models.CASCADE)
location = models.ForeignKey(Location, on_delete = models.CASCADE)
date_from = models.DateField()
date_to = models.DateField()
category = models.CharField(max_length = 20)
Затем я создал шаблон представления. Он предназначен для просмотра всех посещений, сделанных конкретным случаем.
Так что, если URL-адрес «sth / visit / 1», он показывает все посещения case с pk1.
в views.py
class VisitView(TemplateView):
template_name = "visit.html"
def get_context_data(self, **kwargs):
case_pk = self.kwargs['case']
context = super().get_context_data(**kwargs)
context['visit_list'] = Visit.objects.filter(case = case_pk)
print("context[visit_list]: ",context['visit_list'])
Я напечатал контекст [‘visit_list’] в консоли
для URL-адреса «sth / visit / 1», он показывает
context[visit_list]: <QuerySet [<Visit: Visit object (1)>, <Visit: Visit object (2)>]>
для URL-адреса «sth / visit / 2» он показывает
context[visit_list]: <QuerySet [<Visit: Visit object (3)>]>
поэтому я предполагаю, что до этого момента это работает.
но в документе html
<ul>
{% for visit in visit_list %}
<li>[{{visit.date_from }}] {{ visit.date_to }} </li>
{% empty %}
<li>No visit yet.</li>
{% endfor %}
</ul>
он пока не показывает посещение. как для 1, так и для 2. Нет сообщения об ошибке. Просто нет посещения.
Могу ли я узнать, в чем проблема? Большое вам спасибо, пожалуйста, помогите TOT. Я застрял здесь уже несколько часов.
Ответ №1:
Да, потому что вы не возвращаете контекст в шаблон, поэтому к переменным контекста невозможно получить доступ
class VisitView(TemplateView):
template_name = "visit.html"
def get_context_data(self, **kwargs):
case_pk = self.kwargs['case']
context = super().get_context_data(**kwargs)
context['visit_list'] = Visit.objects.filter(case = case_pk)
print("context[visit_list]: ",context['visit_list'])
return context
Комментарии:
1. Действительно спасибо, что ответили на такой глупый вопрос…….. Я думаю, что мой мозг отключился после выполнения этого задания в течение> 24 часов