Почему widthratio (умножение) не работает в моем шаблоне? - PullRequest
5 голосов
/ 24 февраля 2020

Я использую Django 2.0 и Python 3.7. Я читал, что я могу сделать умножение в шаблонах, используя widthratio - умножение в шаблоне django без использования созданного вручную тега шаблона . Тем не менее, в моем шаблоне я пытаюсь это безрезультатно. Я пытаюсь

 {% if widthratio articlestat.score 1 TRENDING_PCT_FLOOR >= articlestat.weighted_score %}style="font-weight:bold;"{% endif %}

Когда мой шаблон выполняется с этим кодом, он выдает ошибку ...

Unused 'articlestat.score' at end of if expression.

Я хочу, чтобы мое выражение if говорило, что кратно " articlestat.score "и" TRENDING_PCT_FLOOR "больше, чем" articlestat.weighted_score ", распечатайте это, но я не могу понять, как это сделать.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2020

Вы не можете использовать шаблонные теги внутри условных выражений if. Что вы можете сделать, так это сначала присвоить вывод widthratio переменной шаблона, а затем сравнить это в своем выражении if:

{% widthratio articlestat.score 1 TRENDING_PCT_FLOOR as ratio %}
{% if ratio >= articlestat.weighted_score %}style="font-weight:bold;"{% endif %}
0 голосов
/ 04 марта 2020

У меня есть привычка использовать теги шаблонов только для чисто шаблонных вопросов (например, форматирование числа в долларах) и оставлять все логи c для моделей (если логи c заданы моделью c) или представления (если это бизнес-логика c или зависит от того, в каком представлении вы находитесь).

Вместо использования пользовательского тега шаблона добавило бы свойство к модели articlestat, если TRENDING_PCT_FLOOR имеет статус c:

class ArticleStat(models.Model):

    TRENDING_PCT_FLOOR = x

    @property
    def is_ratio_positive(self):
        ratio = self.score * self.TRENDING_PCT_FLOOR
        return ratio >= self.weighted_score 

Тогда в шаблоне я бы использовал:

{% if articlestat.is_ratio_positive %}style="font-weight:bold;"{% endif %}

Если articlestat не является моделью (например, он был создан на views.py), то я бы использовал Лог c выше на соответствующем ракурсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...