2012-04-12 2 views
4

Использование django-tagging для объекта, которому присвоено несколько тэгов, как я могу вернуть простой список имен тегов?Теги возвращаемого объекта в виде списка

object.tags() возвращает объект, который нелегко перевести на json, а TaggableManager не является итерируемым.

Любые другие способы?

ответ

6

Существует недокументированная функция TaggableManager называется «get_query_set», из которого легко получить список:

tagsList = [] 
for tag in foobar.tags.get_query_set(): 
    tagsList.append(tag.name) 
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) 

Я думаю, что и должно работать.

+0

Это _should_ работали - но по какой-то причине у меня были проблемы, ссылающийся и импортирование тегов. – Goro

+0

что вы имеете в виду «имели проблемы со ссылками»? – syabro

+0

Как есть, код не будет ссылаться на тег. Я попытался «импортировать тег» и «из тега taggit import Tag», но это тоже не сработало. – Goro