从Django中的ManyToMany关系中获取模板中的属性

时间:2013-12-28 19:41:31

标签: python django django-templates

在我的Django 1.5项目中,我有两个模型之间的多对多关系:

class File(models.Model):
    #..
    subject = models.ManyToManyField(Subject)

class Subject(models.Model):
    subject = models.CharField(max_length = 30, primary_key=True, blank=False, null=False)

我想要做的是,知道文件,访问我的HTML模板中的主题。

当然{{ file.subject }}不起作用。我知道{{ file.subject.subject }}它是一个可以循环的查询集,但即使我尝试,我也不知道如何抓住正确的Subject对象。

有没有办法只从模板中做到这一点?或者最好从视图中传递它?

2 个答案:

答案 0 :(得分:2)

试试join模板标记:

{{ file.subject.all|join:", " }}

或循环:

{% for subj in file.subject.all %}
     {{ subj }}<br/>
{% endfor %}

答案 1 :(得分:1)

将有0个或更多科目;如果您只想循环播放,请使用for file.subject.all()块进行{% for subject in file.subject.all %} {{ subject.subject }} {% empty %} Sorry, no subjects found. {% endfor %}

subject = file.subject.filter(subject__startswith='Foo').first()

如果您需要查找特定主题,则必须查询该主题。在视图中这样做;像这样的逻辑应留给Python代码:

{{1}}