Можно ли выполнять модельные методы в шаблоне? - PullRequest
0 голосов
/ 14 июня 2011

У меня есть модель, у которой есть метод с именем 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 ]

2 голосов
/ 14 июня 2011

Вы можете вызывать только методы без параметров. Так что {{ object.has_voted }} было бы хорошо, если бы метод был определен просто как has_voted(self), но, как вы показали, этого не будет.

Лучший способ передать параметр в метод - это определить простой шаблонный фильтр.

@register.filter
def has_voted(obj, user):
    return self.has_voted(user)

и назовите его:

{{ object|has_voted:user }}
0 голосов
/ 14 июня 2011

Можно, но только если метод не имеет параметров. Как это:

def has_voted(self):

{% if object.has_voted %}

Если у вашего метода есть параметры, вы не можете - это религия Джанго.

См. Связанный вопрос: Как использовать параметры метода в шаблоне Django?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...