代码之家  ›  专栏  ›  技术社区  ›  LeLouch

使用详细视图在django模板中显示数据

  •  0
  • LeLouch  · 技术社区  · 5 年前

    我在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 回复  |  直到 5 年前
        1
  •  1
  •   Ngoc Pham    5 年前

    你可以试试 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 在模板中