4

django-taggingを使用して、複数のタグが割り当てられているオブジェクトの場合、タグ名の簡単なリストを返すにはどうすればよいですか?

object.tags()は、jsonに簡単に変換されないオブジェクトを返し、TaggableManagerは反復可能ではありません。

他の方法はありますか?

4

3 に答える 3

6

TaggableManagerには「get_query_set」と呼ばれる文書化されていない関数があり、そこからリストを簡単に取得できます。

tagsList = []
for tag in foobar.tags.get_query_set():
  tagsList.append(tag.name)
于 2012-04-13T17:06:06.327 に答える
3

最初のバリアント

class MyClass(models.Model)
    ...
    def get_tag_names(self):
        return [tag.name for tag in Tag.objects.get_for_object(self)]

2番目のバリアント:

class MyClass(models.Model)
    ...
    def get_tag_names(self):
        return Tag.objects.get_for_object(self).values_list('name', flat=True)

両方ともうまくいくはずだと思います。

于 2012-04-12T23:26:42.420 に答える
0
tags_list = []
for tag in foobar.tags.all():
  tags_list.append(tag.name)
于 2020-09-05T08:53:48.317 に答える