【问题标题】:Return object tags as a list将对象标签作为列表返回
【发布时间】:2012-04-12 23:02:22
【问题描述】:

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

object.tags() 返回一个不容易翻译成json的对象,并且TaggableManager是不可迭代的。

还有其他方法吗?

【问题讨论】:

    标签: django tagging django-taggit


    【解决方案1】:

    TaggableManager 中有一个未记录的函数,叫做 'get_query_set',从中很容易得到列表:

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

    【讨论】:

      【解决方案2】:

      第一个变种

      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)
      

      我认为两者都应该有效。

      【讨论】:

      • 应该 工作了 - 但由于某种原因,我在引用和导入标签时遇到了麻烦。
      • “引用有困难”是什么意思?
      • 按原样,代码不会引用标签。我试过'import Tag'和'from taggit import Tag',但也没有用。
      • 从 taggit.models 导入 Tad
      【解决方案3】:
      tags_list = []
      for tag in foobar.tags.all():
        tags_list.append(tag.name)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-23
        • 2023-04-08
        • 2017-01-23
        • 2011-05-19
        • 2015-07-07
        • 1970-01-01
        • 2021-01-20
        • 1970-01-01
        相关资源
        最近更新 更多