У меня есть пользовательский тег шаблона следующим образом:
@register.simple_tag
def call_method(obj, method_name, *args):
"""
Usage
in shell
obj.votes.exists(user_id)
in template
{% call_method obj.votes 'exists' user.id %}
"""
method = getattr(obj, method_name)
return method(*args)
Затем я могу вызвать его в шаблоне (подробное представление на основе классов) следующим образом.
{% call_method object.votes 'exists' user.id %}
Мой вопрос Как использовать этот шаблон тега в операторе If? Например, почему я не могу использовать как:
{% if call_method object.votes 'exists' user.id %}
Я использую django -вопрос [https://github.com/shanbay/django-vote] [1]
Моя цель состоит в том, чтобы проверьте, голосовал ли уже пользователь, чтобы я мог изменить класс кнопки голосования. В противном случае, я уже могу проверить это на виду. И это прекрасно работает.
Если невозможно использовать простой тег с аргументом в операторе If, не могли бы вы предложить способ достижения моей цели?
Редактировать: Я добавляю представление .
def vote(request, slug):
term = Term.objects.get(slug=slug)
if term.votes.exists(user_id=request.user.id):
term.votes.down(user_id=request.user.id)
else:
term.votes.up(user_id=request.user.id)
return HttpResponseRedirect(term.get_absolute_url())
и модель:
class Term(VoteModel, models.Model):