django-taggitを使用して、ブログのタグ付けシステムを作成しています。選択されたタグを持つオブジェクトのみが表示されるように、オブジェクトをどのように分離してフィルタリングしますか? djangoをクリックすると、StackOverflowのようになります
django とタグ付けされたすべての質問が表示されます。このブログ投稿で説明されている方法を試しましたが、IndexError: tuple index out of range
. これは私が使用しているコードです:
url(r'^tagged/(?P<tag>[\w-]+)/$', TagView.as_view(), name='tag_url'),
class TagView(ListView):
context_object_name = 'blog'
template_name = 'links/index.html'
def get_queryset(self):
return Blog.objects.filter(tags__name__in=[self.args[0]])
def get_context_data(self, **kwargs):
context = super(TagView, self).get_context_data(**kwargs)
context['requested_tag'] = self.args[0]
return context
<a href='{% url tag_url tag=tag %}'>{{ tag.name }}</a>
この方法を機能させるために何か不足していますか?
これはかなり一般的なプログラミングの必要性のようです。もっと良い方法を知っているかもしれません...あなたのアイデアをありがとう!
編集: @catherine の提案に基づく TagView:
class TagView(ListView):
model = Blog
context_object_name = 'blog_list'
template_name = 'tag-list.html'
def get_queryset(self):
queryset = super(TagView, self).get_queryset()
return queryset.filter(tags__name__in=self.kwargs['tags'])
class Blog(models.Model):
name = models.CharField(max_length=50)
date = models.DateTimeField()
slug = models.SlugField()
article = models.TextField()
tags = TaggableManager()
def __unicode__(self):
return self.name
タグリスト.html:
{% block content %}
stuff
{% for blog in blog_list %}
{{ blog.article }}
{{ blog.name }}
{% endfor %}
{% endblock %}
テンプレートに blog_list が存在せず、使用可能なブログ オブジェクトがありません。むしろ、「もの」だけがテンプレートにレンダリングされます。どんなアイデアでも大歓迎です!ありがとう!