我想在模板中基于当前用户查询模型

时间:2011-10-21 07:48:36

标签: django

我有一个问题,我有这样的事情:

class Thing(models.Model):
    def can_vote(self, user):
        if self.vote_set.filter(user=user).count() < 2:
            return True
        # (A pile of other conditions)

class SomeUser(models.Model):
    pass

class Vote(models.Model):
    user = models.ForeignKey(SomeUser)
    things = models.ForeignKey(Thing)

我希望在模板中执行此操作:

{% if thing.can_vote %}
   {# Review stuff #}
{% endif %}

取决于当前用户投票的次数是否少于次数。问题似乎是Django不允许您将参数传递给方法。我有办法整齐地完成这个吗?

1 个答案:

答案 0 :(得分:4)

您可以使用custom template tag or filter。如果过滤:

@register.filter
def can_vote_on(user, thing):
    if thing.vote_set.filter(user=user).count() < 2:
        return True
    # (A pile of other conditions)

在模板中:

{% if user|can_vote_on:thing %}
   {# Review stuff #}
{% endif %}