是否可以在模板中执行模型方法?

时间:2011-06-14 13:43:34

标签: python django methods view

我有一个名为'has_voted'的方法。它看起来像这样......

def has_voted(self, user):
    # code to find out if user is in a recordset, returns a boolean

是否可以在模板中执行此方法?像object.has_vote(user)

这样的东西

2 个答案:

答案 0 :(得分:2)

您只能调用没有参数的方法。因此{{ object.has_voted }}如果方法被简单地定义为has_voted(self),那么@register.filter def has_voted(obj, user): return self.has_voted(user) 就可以了,但正如您所示,它不会是。{/ p>

将参数传递给方法的最佳方法是定义一个简单的模板过滤器。

{{ object|has_voted:user }}

并称之为:

{{1}}

答案 1 :(得分:0)

您可以,但前提是方法没有参数。像这样:

def has_voted(self):

{% if object.has_voted %}

如果你的方法有参数,你不能 - 这是Django宗教。

请参阅相关问题:How to use method parameters in a Django template?