HTML模板中的ManytoMany标签

时间:2013-06-27 14:59:34

标签: django many-to-many

我是Django的新手,拥有ManyToMany字段的模型。我正试图在我的html中显示tag名称。如果我在模板中使用{{ listing.tag }},我会收到<django.db.models.fields.related.ManyRelatedManager object at 0x10916f410>{{ listing.tag.name }}之类的内容。

这是我的模特:

from django.db import models
from django_extensions.db.fields import AutoSlugField

class Tag(models.Model):
    name = models.CharField(max_length=100)
    slug = AutoSlugField(populate_from='name', unique=True)

    def __unicode__(self):
        return self.name

class Listings(models.Model):
    listing = models.CharField(max_length=50)
    description = models.CharField(max_length=500)
    email = models.EmailField(max_length=75)
    tag = models.ManyToManyField(Tag)
    pub_date = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return self.listing  

我如何显示标签的名称?提前致谢。

3 个答案:

答案 0 :(得分:4)

ManyToMany returns a queryset开始,您需要遍历查询集。

您可以通过以下方式访问查询集:{{ listing.tag.all }}

你可以这样访问它

{% for tag in listing.tag.all %}
    {{tag.name}}
{% endfor %}

答案 1 :(得分:1)

你应该遍历你的标签集:

{% for tag in listing.tag.all %}
   {{ tag.name }}
{% endfor %}

答案 2 :(得分:0)

如果您只需要__str__(或等效)和简单的连接,这将有效:

{{ listing.tag.all|join: ", "}}

参考:findIndex