1

django-tagging-0.3.1パッケージを使用して、Webサイトのすべての記事にタグを付けています。しかし、このパッケージはタグ名の空白をサポートしていないようです。つまり、タグ名に空白が含まれている場合、このパッケージが提供する関数を使用して、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 に答える