将Django模型传递给模板

时间:2016-09-12 12:20:40

标签: python django django-models

我有一个小问题,我似乎无法理解。这似乎是一件非常微不足道的事情,但我无法弄明白。基本上我要做的是创建一个Project模型,其中包含某个项目的信息,然后有另一个名为Link的模型,其中包含链接的名称,如“获取程序”或“下载发布”并拥有一个URLField,其中包含这些链接的URL,并且是Project的子项。

到目前为止,我的models.py如下:

from django.db import models

class Project(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField()

    def get_name(self):
        return self.name

    def get_description(self):
        return self.description

    def __str__(self):
        return self.name

class Link(models.Model):
    project = models.ForeignKey(Project)
    name = models.CharField(max_length=255)
    url = models.URLField()

    def get_name(self):
        return self.name

    def __str__(self):
        return self.name

问题在于我views.py我希望能够传递Projects对象,所以我可以迭代它们并显示每个项目的所有链接,包括项目对象字段,如名称和描述。到目前为止我已经完成了:

from django.shortcuts import render
from django.http import HttpResponse
from .models import Project, Link

def projects_index(request):

    projects = Project.objects.all()
    links = Link.objects.all()

    context = {
        'projects': projects,
    }
    return render(request, 'projects.html', context)

2 个答案:

答案 0 :(得分:1)

在模板projects.html中,您应该能够使用

遍历每个项目的链接
{% for project in projects %}
  {% for link in project.link_set.all %}
      {{ link }}
  {% endfor %}
{% endfor %}

答案 1 :(得分:0)

你真的应该做这个教程。

Rectangle {
        id: white_background
        objectName: "white_background"
        x: 0
        y: 0
        width: 640
        height: 350
        color: "#ffffff"
        border.width: 0
        ...
}

在外键中添加for project in projects: for link in project.link_set.all: <...> ,内循环可以是

related_name="links"