3

我对 Django 很陌生,并且有一个带有 ManyToMany 字段的模型。我正在尝试tag在我的 html 中显示名称。如果我{{ 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  

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

4

3 回答 3

6

由于ManyToMany 返回一个查询集,因此您需要遍历查询集。

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

你可以通过这种方式访问​​它

{% for tag in listing.tag.all %}
    {{tag.name}}
{% endfor %}
于 2013-06-27T15:02:15.393 回答
1

您应该遍历您的标签集:

{% for tag in listing.tag.all %}
   {{ tag.name }}
{% endfor %}
于 2013-06-27T15:02:49.227 回答
0

如果您只需要__str__(或等价物)和一个简单的连接,这将起作用:

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

参考:https ://docs.djangoproject.com/en/1.11/ref/templates/builtins/#join

于 2017-06-16T09:21:25.150 回答