我有一个相当简单的模型,它使用Django Taggit进行标记。
一切都很好,但现在我想扩展一些功能,我有点困惑。
我想要的是两种观点。
显示系统中所有标签的一个。 一个用我的应用程序显示具有特定标记的所有内容。
对我来说有意义的是为每个视图执行以下操作。
在views.py中为myapp
所有标签
来自myapp.models导入应用
来自taggit.models导入标签
class TagList(ListView):
“”“获取db”“”
中的所有标签queryset = Tag.objects.all()
template_name = "myapp/TagList.html"
paginate_by = 10
标记的所有内容
来自myapp.models导入应用
来自taggit.models导入标签
class TaggedList(ListView): “”获取标签的所有内容“”“
template_name = "myapp/TaggedList.html"
def get_object(self):
return get_list_or_404(App, tag__iexact=self.kwargs['tag'])
我是否已经失去理智或是否真的那么容易?顺便说一下,我正在使用泛型类视图。
感谢您的帮助。 戴夫
答案 0 :(得分:3)
2。 我相信这是为了返回单个对象,而不是多个对象。
def get_object(self):
相反,也许您应该尝试以下内容:
def get_queryset(self):
return TaggedItem.objects.filter(tag__iexact=self.kwargs['tag'])
这将返回包含GenericForeignKeys
的项目列表如果您只对名为App的特定型号感兴趣
return App.objects.filter(tags__name__in=[self.kwargs['tag']])
模板中的默认变量名是TaggedItem_list,然后是
{% for item in TaggedItem_list %}
{{item.content_object}} {# generic foreign key here #}
{% endfor %}
urls.py必须与
类似url(r'someapp/(?P<tag>\w+)/$', TaggedList.as_view())