【问题标题】:How do I create list and detail views for django-taggit?如何为 django-taggit 创建列表和详细视图?
【发布时间】:2012-01-09 01:00:01
【问题描述】:

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

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

我想要的是两个视图。

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

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

在 myapp 的 views.py 中

  1. 所有标签

    从 myapp.models 导入应用程序

    从 taggit.models 导入标签

    类 TagList(ListView):

    """ 获取db"""中的所有标签

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

    从 myapp.models 导入应用程序

    从 taggit.models 导入标签

    类标记列表(列表视图): """ 获取标签的所有内容 """

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

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

感谢您的帮助。 戴夫

【问题讨论】:

  • 好的,所以第一个效果很好,这就是我可以做到的。
  • 第二个不行。我收到一个整数错误,告诉我我要求的是错误的东西。
  • return get_list_or_404(App, tags=self.kwargs['tag']) - 这就是我正在使用的查询

标签: django django-views django-taggit


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多