views:

29

answers:

1

I am trying to call a method in a model from a template and I have come to the conclusion that this cannot be done.

This is my code

{% if request.user.is_authenticated %}
  {% if a_story.is_story_liked(request.user.id) %}
    <a class="story_like" data-id="{{ a_story.id }}" href="#">Like</a>
  {% endif %}
  {% else %}
    <a class="story_like_login" data-id="{{ a_story.id }}" href="#">Like</a>
{% endif %}

The error happens on the second line. "is_story_liked" checks if the user has "liked" a story or not. If not, then I would write the same anchor tag but with a different class.

I am kinda stumped with this one. I am trying to output different class names: if the user is logged in, if the user is not logged in and if the user has "liked" or not "liked" an article/story.

+2  A: 

Method calls in django templates work only if they don't have an argument (eg. {% if request.user.is_authenticated %}). You will either need to put that functionality in the view that renders this template or put this functionality in a custom template tag.

lazerscience
Thanks for the hint... template tags work great in this scenario.
iHeartDucks