私は投稿を持ち、それぞれの投稿にタイトル、日付、リンク、タグがあるブログアプリを作成しようとしています。django-jinjaプロジェクトでManyToManyFieldを反復処理するにはどうすればよいですか?
これは、これはこれはblog_list.htmlで
<!-- blog_list.html -->
{% extends "mysite/layout.html" %}
{% block content %}
<h1>my blog posts</h1>
<ul>
{% for post in object_list %}
<li><span class="title"><a href="{{ post.link }}">{{ post.title }}</a></span></li>
<p>{{ post.date|date:"d-m-Y" }}</p>
{% endfor %}
</ul>
{% endblock %}
{% block sidebar %}
<h4 id="sidenav">tags</h4>
{% for post in object_list %}
<ul>
<!-- I want to show the tags here -->
</ul>
{% endfor %}
{% endblock %}
私blog_list.htmlである私のviews.py
# views.py
from django.conf.urls import url, include
from django.views.generic import ListView
from blog.models import Post
urlpatterns = [
url(r'^$', ListView.as_view(queryset=Post.objects.all().order_by("-date"), template_name="blog/blog_list.html")),
]
であるI私のmodels.py
# models.py
from django.db import models
class Tag(models.Model):
name = models.CharField(max_length=20)
def __str__(self):
return self.name
class Meta:
ordering = ('name',)
class Post(models.Model):
title = models.CharField(max_length=300)
date = models.DateTimeField()
link = models.URLField()
tags = models.ManyToManyField(Tag)
def __str__(self):
return self.title
@property
def tags_name(self):
return [x.name for x in self.tags]
class Meta:
ordering = ('date',)
ですすべての投稿の詳細を表示しています。サイドバーには、利用可能なすべてのブログ投稿からすべてのタグを表示します。 post.tagsはManyToManyFieldなので、どうすればそれを反復処理できますか?
post.tags.all()%} '' 'で' {'%for tagを試したことがありますか?そのループの中では、 '' '{{tag}}' ''としてタグにアクセスできるはずです。 –
@ISOmetricあなたが '{post.tags.all%}のタグのための%{{tag}} {%endfor%}'の '()'を意味すると思います! – hansTheFranz
@hansTheFranzはい、私はあなたが正しいと信じています、私の間違い。 –