在Django中查找标记对象数组中的标记的最佳方法

时间:2011-07-12 19:53:50

标签: python django

我正在使用django-tagging,我有一个标记对象数组。确定给定标签是否属于其中的最佳方法是什么?

def is_new (self):
    tags = Tag.objects.get_for_object(self) 
    tagged = False

    for tag in tags:
        if tag = 'new':
            tagged = True

    return tagged

2 个答案:

答案 0 :(得分:1)

我从未真正使用过django标记,但是很快查看源代码.get_for_object返回该对象的标记的查询集。不是真正的清单。

我不确定您的代码是否正常工作[来自分配/比较问题]或者您是否只想改进它。但是,由于您返回的是查询集,因此无法继续过滤它,例如:

Tag.objects.get_for_object(self).filter(name='new')

或者能够使用JamesO的例子:

if 'new' in tags:
   return True

我认为您需要先将查询集转换为列表。

list(tags)

然后它应该有用。

请参阅documentation强制列表评估 - 并注意内存问题。

所以我的建议是首先测试过滤 - 让我们知道它是否有效,因为现在我很好奇。

答案 1 :(得分:0)

tags = Tag.objects.get_for_object(self) 

if 'new' in tags:
    return True