Как правильно сделать вывод звезд в отзывах на Django?

Всем привет.

Задача: Человек оставляет отзыв (текст) и количество звезд (цифру), и данная информация появляется на сайте: текст - текстом, а цифры заменяются на звезды(изображение) (цифра 3 = три звезды, итд).

В итоге:

6b3a5c246fa34c4c9ef17a8be8196055.jpg

Я это сделал так:

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


Может кто-нибудь подсказать правильную логику того, как это нужно делать?
  • Вопрос задан
  • 684 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы