2011-07-12 10 views
1

私はdjangoタグを使用しています。タグオブジェクトの配列があります。特定のタグがそれらの間にあるかどうかを判断する最良の方法は何ですか?Djangoのタグオブジェクトの配列の中でタグを見つける最良の方法

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

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

    return tagged 
+0

あなたのコードは正しく実行されません: 'if tag = 'new':'は割り当てであり、比較ではありません。 –

+0

右。私はあまりにも速く入力していた。 – wmfox3

答えて

1

私は本当にDjangoのタグ付けを使用したことがないが、本当にすぐにソースを見.get_for_objectは、そのオブジェクトのためのタグのクエリセットを返します。実際のリストではありません。

あなたのコードが動作しているかどうかわかりません[割当て/比較の問題からappart]か、単に改善したいのかどうかわかりません。しかし、あなたはクエリセットを戻ってきているので、あなたは、インスタンスのためにそれをフィルタリングし続けることができませんでした:

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

かのJamesOの例を使用することができるようにする:

 
if 'new' in tags: 
    return True 

を私はあなたにクエリセットをオンにする必要があると思います最初にリスト。

list(tags) 

次に、動作するはずです。

リストの評価を強制するにはdocumentationを参照してください。

私の推奨は最初にフィルタリングをテストすることです - それがうまくいくかどうかを私たちに教えてください。

+0

あなたの提案は注目されており、リスト評価を強制するよりも効率的であるようです。私はtags = list(Tag.objects.get_for_object(self))に続いてJamesOの提案を試みましたが、Trueを評価しませんでした。多分私は間違ったことをしていました。 – wmfox3

0
tags = Tag.objects.get_for_object(self) 

if 'new' in tags: 
    return True 
+0

何らかの理由で、オブジェクトに「new」のタグを与えたときにTrueと評価されません。 – wmfox3

関連する問題