我是Web开发的新手,我使用Django创建了一个示例项目。到目前为止,我有一个Django支持的页面,显示我的一个数据库模型对象的内容,称为Publications。我在视图模板中的代码是:
<html><head><title>Publications</title></head>
<body>
<h1>Publications</h1>
<ul>
{% for publication in publication_list %}
<li>{{ publication.title }} </li>
{% endfor %}
</ul>
</body></html>
这很好用,但现在我想访问并显示名为Tags的Publications上的多对多属性。我尝试添加另一个标签,如下所示:
<html><head><title>Publications</title></head>
<body>
<h1>Publications</h1>
<ul>
{% for publication in publication_list %}
<li>{{ publication.title }} </li>
{% for tag in publication_list.tags %}
<li>{{ tag.title }} </li>
{% endfor %}
{% endfor %}
</ul>
</body></html>
我意识到这是非常错误的,但我没有看到如何访问Tags模型。作为参考,我在视图中显示出版物的功能是:
def display_publications(request):
publication_list = Publication.objects.order_by('title')[:10]
return render(request, 'publications.html', {'publication_list': publication_list})
我的出版物和标签模型是:
class Tag(models.Model):
title = models.CharField(max_length=50)
class Publication(models.Model):
title = models.CharField(max_length=200)
tags = models.ManyToManyField(Tag, blank=True)
感谢任何帮助。
答案 0 :(得分:3)
您所做的只是访问ManyRelatedManager。您需要为该管理器指定查询。在python中,它将是:
publication.tags.all()
在django模板中,它将是:
{% for tag in publication.tags.all %}
{{ tag }}
{% endfor %}
这应该包含在多对多关系的官方文件中。
编辑:以下是多对多关系工作原理的一个很好的示例:https://docs.djangoproject.com/en/1.5/topics/db/examples/many_to_many/
答案 1 :(得分:0)
因为您似乎遇到了一些问题,鉴于您对其他问题的评论,以下是对模板的更改。您根本不需要修改视图。
{% for publication in publication_list %}
<li>{{ publication.title }}
<ul>
{% for tag in publication.tags.all %}
<li>{{ tag.title }} </li>
{% endfor %}
</li>
</ul>
{% endfor %}