Всем привет.
Задача: Человек оставляет отзыв (текст) и количество звезд (цифру), и данная информация появляется на сайте: текст - текстом, а цифры заменяются на звезды(изображение) (цифра 3 = три звезды, итд).
В итоге: Я это сделал так:
1) В модель добавил метод, который выводит количество картинок(звезд), в зависимости от той цифры, которую нам ставит человек.
class Mention(models.Model):
mentionn = models.ForeignKey(Step, on_delete=models.CASCADE)
mention_text = models.TextField()
mention_digit = models.IntegerField()
def get_star(self):
if self.mention_digit == 1:
return '<img src="../static/bakot/imagination/starfull.ico">'*1
elif self.mention_digit == 2:
return '<img src="../static/bakot/imagination/starfull.ico">'*2
elif self.mention_digit == 3:
return '<img src="../static/bakot/imagination/starfull.ico">'*3
elif self.mention_digit == 4:
return '<img src="../static/bakot/imagination/starfull.ico">'*4
elif self.mention_digit == 5:
return '<img src="../static/bakot/imagination/starfull.ico">'*5
else:
return self.mention_digit
2) В шаблон просто вставил данный метод в режиме сейф. Т.е просто хардкор-код html.
<div class="small-12 medium-12 large-6 columns">
<ul class="menu pdding_h44">
<p>{{ men.get_star|safe }}</p>
</ul>
</div>
Проблема: Моя реализация работает, но я уверен, что я это сделал очень тупо и глупо.
Пробовал заменить хардкор-ссылки на ссылки типа: уже не работало.
return '<img src="{% static "bakot/imagination/starfull.ico" %}">'*4
Может кто-нибудь подсказать правильную логику того, как это нужно делать?