如何在Djang中呈现html中的多对多标记

2024-05-04 02:15:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个标签模型,它是Blog的外键模特。但是我无法在html模板中呈现标记。你知道吗

这是标签模型

class Tag(models.Model):

    name = models.CharField(max_length=40)

    class Meta:
        verbose_name = "tag"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

这里是博客模型

class Blog(models.Model):
    title = models.CharField(max_length=100, verbose_name='titel')
    tag = models.ManyToManyField(Tag, blank=True, verbose_name='tag')

    class Meta:
        verbose_name = "Blog"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.title  

在我的视图.py你知道吗

class BlogDetailView(View):

    def get(self, request, news_pk):
        blog = Blog.objects.get(id=int(news_pk))
        title = news.title
        tags = blog.tag
        return render(request, 'news_detail.html',
                      {
                          'title': title,
                          'tags': tags
                      })

在细节上: 我尝试了两种方法来呈现标签,都失败了。你知道吗

1。你知道吗

{% for tag in tags %}

<span>{{ tag.name }}</span>
{% endfor %}

这样就什么都没有了。你知道吗

2。你知道吗

    <span>{{ tags.values }}</span>

它有很多这样的东西

 <QuerySet [{'id': 4, 'name': 'eatting'}, {'id': 5, 'name': 'drinking'}, {'id': 7, 'name': 'playing'}]>
  1. {{tags.values\u列表}}

结果就像

 <QuerySet [(4, 'eating'), (5, 'drinking'), (7, 'playing')]>

任何朋友都能告诉我用html呈现博客标签的正确方法吗?非常感谢!你知道吗


Tags: name模型selfidverbosetitlemodelshtml
1条回答
网友
1楼 · 发布于 2024-05-04 02:15:00

在视图.py我用注解

class BlogDetailView(View):

    def get(self, request, news_pk):
        blog = Blog.objects.get(id=int(news_pk))
        title = news.title
        tags = blog.tag.annotate(blog_count=Count('blog'))
        return render(request, 'news_detail.html',
                      {
                          'title': title,
                          'tags': tags
                      })     

然后在模板中:

{% for tag in tags %}
<span>{{ tag.name }}</span>
{% endfor %}

相关问题 更多 >