我在DetailView模板上显示数据时遇到问题,基本上是想显示一个项目区域和模型所执行任务的所有数据
##models
class Project(models.Model):
name = models.CharField(max_length=100)
...
class Area(models.Model):
name = models.CharField(max_length=100)
project = models.ForeignKey(Project ,on_delete=models.CASCADE, related_name='areas' )
class Task(models.Model):
....
area = models.ForeignKey(Area ,on_delete=models.CASCADE, related_name='tasks' )
#view
class ProjectDetailView(DetailView):
model = Project
template_name = 'project-detail.html'
{% for area in object.areas.all %}
{{area}}<br />
{% for t in area.tasks.all %}
{{ t }}<br />
{% endfor %}
<hr/>
{% endfor %}
答案 0 :(得分:1)
您可以尝试prefetch_related并按以下方式修改详细信息:
#view
class ProjectDetailView(DetailView):
model = Project
template_name = 'project-detail.html'
def get_queryset(self):
return Project.objects.all().prefetch_related('areas__tasks')
并尝试在模板中显示数据task