Мне нужно сделать проверку в модели, что-то типа:
Class Action(models.Model):
...
def voted(self):
RedisCache = redis.StrictRedis()
return RedisCache.sismember("ph_real:%i" % self.id, self.request.user.id)
Но у меня не получается получить self.request.user.id. Можно ли его как-то получить в модели? Может можно создать def voted(self, id): и передать id из шаблона?
Предыстория задачи, в общем-то она и не особо нужна для решения вопроса:
У меня есть лента событий с голосованием по каждому событию
Stream.html:
{% for action in action_list %}
{% if action.voted%}
<p>You have already voted</p>
{% else %}
<form action="{% url "vote" action.id %}" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{% endif %}
Само голосование работает, не работает проверка {% if action.voted%} , не могу понять как ее организовать. Данные о уже проголосовавших лежат в кэше, у меня получилось сделать проверку через контекст, она работает:
context["voted"] = RedisCache.sismember("ph_real:%i" % self.object.id, self.request.user.id)