我正在Django中编写一个web应用程序,用户可以在其中对帖子进行投票,从1到5(使用星号(,当我想显示星号时,我必须决定其中有多少必须是黄色,有多少不是黄色。我将反馈保存在此模型中:
class Feedback(models.Model):
text = models.TextField()
stars = models.IntegerField(choices=[(i, i) for i in range(1, 6)], blank=False)
article = models.ForeignKey(Article, on_delete=models.CASCADE)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
问题出在模板上,因为我想做这样的事情,但我不知道如何以及是否是一个好的选择:
{% for _ in art.stars %}
<span class="fa fa-star checked"></span>
{% endfor %}
{% for _ in (5-art.stars) %}
<span class="fa fa-star"></span>
{% endfor %}
首先我们将通过views.py
:的范围
return render(request, 'template_name', {'art': art, 'range': range(1, 6),})
你可以这样做:
{% for index in range %}
<span class="fa fa-star {% if index <= art.stars %}checked{% endif %}"></span>
{% endfor %}
或者,如果您不想在views
中传递范围,可以在模板中使用make_list
。