我有一个相当简单的模型,该模型使用django taggit进行标记。

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

我想要的是两个视图。

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

对我来说,有意义的是为每种观点做以下操作。

在views.py for myapp

  1. 所有标签

    来自myApp.models导入应用

    从taggit.models导入标签

    类标签列(ListView):

    “”“获取DB中的所有标签”。

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

    来自myApp.models导入应用

    从taggit.models导入标签

    class taggedList(listView):“”“获取标签”“”的所有contet

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

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

谢谢您的帮助。戴夫

有帮助吗?

解决方案

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

def get_object(self):  

相反,也许您应该尝试以下内容:

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

这将返回带有通用Foreignkeys的项目列表

如果您仅对称为应用程序的特定模型感兴趣,则

    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())
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top