使用详细信息视图在Django模板中显示数据

时间:2019-01-25 01:15:13

标签: django django-models django-templates django-views

我在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 %}

1 个答案:

答案 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