我在使用django标记方面遇到了麻烦 - 通过包含多个单词的标记进行过滤不起作用。 模型
class MyWidget(models.Model):
"""Widget for tagging. It's damn bugged, so it need try except statement
for be able to import in shell and work in general. Otherwise it's raiseing
exception."""
name = models.CharField(max_length = 50)
try:
tagging.register(MyWidget)
except tagging.AlreadyRegistered:
pass
视图
class PostsByTags(ListView):
"""View returns news filtered by tag."""
template_name = 'news.djhtml'
contect_object_name = 'news_list'
def get_queryset(self):
tags = unquote(self.kwargs['tag'])
return TaggedItem.objects.get_by_model(News(), tags)
网址
url(r'^news/(?P<tag>[\w\s]*)/$', views.PostsByTags.as_view(),
name = 'tagged_news'),
如果网址看起来像那样
/消息/分离%20tag /
视图类返回空列表。是什么原因?我该如何解决?
答案 0 :(得分:2)
我认为查询标记被拆分为两个(在tagging.utils.parse_tag_input中)。
get_by_model也可以使用Tag项而不是字符串,所以尝试类似的东西。
tag_object = Tag.objects.get(name=self.kwargs['tag'])
TaggedItem.objects.get_by_model(News(), tag_object)
答案 1 :(得分:0)
如何格式化您的网址:
url(r'^news/((?P<tag>[^/]+))/$', views.PostsByTags.as_view(),
name = 'tagged_news'),