2011-11-29 74 views
5

我有一个相当简单的模型,使用Django Taggit进行标记。如何为django-taggit创建列表和详细视图?

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

我想要的是两个视图。

一个显示系统中我所有的标签。 一个使用特定标签显示来自我的应用的所有内容。

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

在views.py为MYAPP

  1. 所有标签

    从myapp.models导入应用

    从taggit.models导入标签

    类标记列表(ListView控件):

    “”“获取数据库中的所有标签”“”

    queryset = Tag.objects.all() 
    template_name = "myapp/TagList.html" 
    paginate_by = 10 
    
  2. 所有内容从myapp.models一个标签

    导入应用

    从taggit.models导入标签

    类TaggedList(ListView控件): “””获得所有为标签“”“

    template_name = "myapp/TaggedList.html" 
    
    def get_object(self): 
        return get_list_or_404(App, tag__iexact=self.kwargs['tag']) 
    

我失去了理智,还是真的那么容易?顺便说一句,我使用的是泛型类视图。

感谢您的帮助。 戴夫

+0

好的,所以第一个很好,这就是我可以做到的。 –

+0

第二个是不行的。我收到一个整数错误,告诉我我要求错误的东西。 –

+0

return get_list_or_404(App,tags = self.kwargs ['tag']) - 这就是我正在使用的查询 –

回答

3

2. 我相信这是为了返回一个单一的对象,而不是多个对象。

def get_object(self): 

相反,也许你应该尝试类似以下内容:

def get_queryset(self): 
    return TaggedItem.objects.filter(tag__iexact=self.kwargs['tag']) 

这将返回的项目与GenericForeignKeys

如果你只叫应用程序,然后

一个特定的模式感兴趣列表
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 %} 

这个网址。py将不得不类似于

url(r'someapp/(?P<tag>\w+)/$', TaggedList.as_view()) 
相关问题