Django - несколько моделей в одном представлении
Я просмотрел страницы StackOverflow, и ни одно из решений этой проблемы у меня не работает. У меня есть две модели в одном приложении, и я пытаюсь отобразить данные из обеих моделей в одном шаблоне, используя DetailView на основе классов.
Это мой код, но единственное, что отображается, - это данные из модели проекта.
models.py
from django.db import models
class Project(models.Model):
project_name = models.CharField(max_length=100)
project_location = models.CharField(max_length=100)
def __str__(self):
return self.project_name
class Well(models.Model):
project_name = models.ForeignKey(Project, on_delete=models.CASCADE)
well_name = models.CharField(max_length=100)
def __str__(self):
return self.well_name
views.py
class ProjectDetailView(DetailView):
model = Project
template_name = 'project/project_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['projects'] = Project.objects.all()
context['wells'] = Well.objects.all()
return context
html
{{ project.project_name}} {{ well.well_name}}
Что я упускаю? В документации Django для подробного просмотра показано, как отображать данные только из одной модели, а не из двух.
Вам не нужно добавлять ничего лишнего в контекст, вы можете работать с:
{{ project.project_name }}
{% for well in project.well_set.all %}
{{ well.well_name }}
{% endfor %}