1

我正在使用django-tagging-0.3.1包来标记我网站中的所有文章。但是我刚刚发现这个包似乎不支持标签名称中的空格,这意味着当标签名称中有空格并且您使用它提供的功能时TaggedItem.objects.get_by_model,搜索所有带有该标签的文章,您将得到一个空列表. 但实际上我检查了我的服务器,标签名称已正确显示并与相应的文章相关联。那么有什么方法可以配置以使包含空间的标签搜索工作?谢谢。

4

1 回答 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 回答