将对象标记作为列表返回

时间:2012-04-12 23:02:23

标签: django tagging django-taggit

使用django-tagging,对于分配了多个标签的对象,如何返回标签名称的简单列表?

object.tags()返回一个不易转换为json的对象,TaggableManager不可迭代。

还有其他方法吗?

3 个答案:

答案 0 :(得分:6)

TaggableManager中有一个名为'get_query_set'的未记录函数,从中可以轻松获取列表:

tagsList = []
for tag in foobar.tags.get_query_set():
  tagsList.append(tag.name)

答案 1 :(得分:3)

第一个变种

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

第二种变体:

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

我认为两者都应该有用。

答案 2 :(得分:0)

tags_list = []
for tag in foobar.tags.all():
  tags_list.append(tag.name)