2017-09-29 18 views
0

テンプレート内のモデル(check_nick)から関数を呼び出そうとしています。関数内の項目が出力されているので、テンプレートは正常に機能しているようです。しかし、私がテストしているuser.groupがNICK_BRANDSリストの一部であるNICKであるため、期待される結果(True)を得られません。Django:テンプレート内でモデルの関数を呼び出す - 動作しません

MODEL.PY:

NICK_BRANDS = ['NICK', 'NICKT', 'NICKN', 'NICKK', 'NICKA'] 


class User(): 

    group = models.ForeignKey(Brand, null=True, blank=True) 

    def check_nick(self): 
     brand = self.group 
     print brand //prints NICK 
     print brand in NICK_BRANDS //prints False (should be True!) 
     if brand in NICK_BRANDS: 
      return True 
     else: 
      return False 

TEMPLATE:

{% if user.check_nick %} 
    //add some markup 
{% endif %} 

答えて

1

self.groupは、関連Brandモデルではなく、文字列のインスタンスになります、したがって、おそらくin文でTrueを返しません。私はいくつかのBrand.nameプロパティがあると推定し、あなたが使用する必要があります:

def check_nick(self): 
    return self.group.name in NICK_BRANDS 
2

あなたのデバッグは、brandのいくつかの文字列表現を出力しますが、実際のオブジェクトをチェックしています。 if節をsthに変更します。

if str(brand) in NICK_BRANDS: 
# if brand.title in NICK_BRANDS: 
# if brand.name in NICK_BRANDS: 
# or whatever field of Brand is "NICK" 
関連する問題