我有一个问题,我有这样的事情:
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不允许您将参数传递给方法。我有办法整齐地完成这个吗?
答案 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 %}