Django-如何在模型中使用ManyToManyField创建动态模板

时间:2017-05-02 19:15:13

标签: python django many-to-many

我是Django的新手。我试图弄清楚如何将MyModel(manytomany)的tags属性添加到MyModel中每个对象的模板(mytemplate.html)上。注意:标签管理员中有4个可能的标签。 MyModel中的一些对象有2个标签,有些标签有1.我如何在模板上获得每个对象唯一的标签选择?这是我的文件:

models.py

class Tag(models.Model):
    CATEGORY_CHOICES = (
        ('dataset', 'dataset'),
        ('brand', 'brand'),
    )
    tag = models.CharField(max_length=100)
    category = models.CharField(max_length=100, choices=CATEGORY_CHOICES)

class MyModel(models.Model):
    id = models.CharField(max_length=30, primary_key=True)
    publish_date = models.DateField()
    tags = models.ManyToManyField(Tag)

views.py

from .models import MyModel, Tag

def index(request):

    tags = Tag.objects.all()

    infos = MyModel.objects.all().order_by('publish_date').reverse()

    return render(request, 'mytemplate.html', {'infos': infos, 'tags':tags})

mytemplate.html

现在,这只创建了4个p元素 - 一个用于所有4个可能的标记'

{% for info in infos %}
    <small>{{info.publish_date}}</small>
    {% for tag in tags %}
        <p>{{tag.tag}}</p>
    {% endfor %}
{% endfor %}

1 个答案:

答案 0 :(得分:0)

尝试以下

{% for info in infos %}
    <small>{{info.publish_date}}</small>
    {% for tag in info.tags.all %}
        <p>{{tag.tag}}</p>
    {% endfor %}
{% endfor %}