如何为django-taggit创建列表和详细信息视图?

时间:2011-11-29 17:22:40

标签: django django-views django-taggit

我有一个相当简单的模型,它使用Django Taggit进行标记。

一切都很好,但现在我想扩展一些功能,我有点困惑。

我想要的是两种观点。

显示系统中所有标签的一个。 一个用我的应用程序显示具有特定标记的所有内容。

对我来说有意义的是为每个视图执行以下操作。

在views.py中为myapp

  1. 所有标签

    来自myapp.models导入应用

    来自taggit.models导入标签

    class TagList(ListView):

    “”“获取db”“”

    中的所有标签
    queryset = Tag.objects.all()
    template_name = "myapp/TagList.html"
    paginate_by = 10
    
  2. 标记的所有内容

    来自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'])
    
  3. 我是否已经失去理智或是否真的那么容易?顺便说一下,我正在使用泛型类视图。

    感谢您的帮助。 戴夫

1 个答案:

答案 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())