2017-09-29 50 views
0

我想從我的模型(check_nick)中調用我的模板中的函數。由於函數中的項目被打印出來,看起來該模板成功地擊中了該功能。然而,我沒有得到預期的結果(真),因爲我測試的user.group是NICK,它是NICK_BRANDS列表的一部分。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 

模板:

{% 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-clause改爲:

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"