我正在使用django-tagging-0.3.1包来标记我网站中的所有文章。但是我刚刚发现这个包似乎不支持标签名称中的空格,这意味着当标签名称中有空格并且您使用它提供的功能时TaggedItem.objects.get_by_model
,搜索所有带有该标签的文章,您将得到一个空列表. 但实际上我检查了我的服务器,标签名称已正确显示并与相应的文章相关联。那么有什么方法可以配置以使包含空间的标签搜索工作?谢谢。
问问题
296 次
1 回答
3
问题似乎出在由get_tag_list
调用的实用程序函数中get_by_model
。如果传递一个字符串(例如'my tag with spaces'
),它将返回以下查询:
Tag.objects.filter(name__in=parse_tag_input(tags))
不幸的是,该parse_tag_input
函数假定以空格分隔的单词是不同的标签,因此它会断言您正在搜索标签['my', 'tag', 'with', 'spaces']
,这当然不会返回任何内容。
稍后在get_tag_list
函数中,检查输入是否为列表/元组:
elif isinstance(tags, (types.ListType, types.TupleType)):
...
它后面的代码不调用 parse_tag_input(我猜它假设列表/元组中的每个字符串都是一个完整的标签)。
TL;DR: 因此,我相信如果您传递包含标签名称的元组或列表,它会正确找到它。
TaggedItem.object.get_by_model(MyModel, ['my tag with spaces'])
于 2013-03-08T19:03:01.503 回答