Есть ли более простой / короткий способ отфильтровать этот вид кода в шаблоне Django? - PullRequest
0 голосов
/ 28 марта 2012

В моем шаблоне у меня есть

Vendor:
    {% if order.vendor %}
        {{ order.vendor.name }}
    {% else %}
        Not assigned yet.
    {% endif %}<br />
Quote:
    {% if order.quote %}
        ${{ order.quote }}
    {% else %}
        No quote yet.
    {% endif %}<br />

Я знаю, что я мог бы сделать более простую версию с {{ value|default:"nothing" }}, но как это применимо ко 2-му случаю с Цитатой? Поскольку версия по умолчанию также должна скрывать $. В противном случае он скажет $No quote yet.. Хммм ... может быть есть способ использовать фреймворк Django humanize с символами $?

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Ну, в зависимости от того, как хранятся ваши значения для порядка. Цитата Я бы, вероятно, лично подошел к этому с помощью пользовательского фильтра и заменил бы его на что-то вроде {{ order.quote|currency|default:"No quote yet" }}

Где валюта - это пользовательский шаблонный фильтр, определенный (примерно) как:

import decimal
@register.filter
def currency(val):)
    try:
        return '$%s' % cents / decimal.Decimal(100.00)
    except TypeError:
        return ''

Это, конечно, предполагает, что вы храните кавычки в виде целых чисел, а не с плавающей точкой. Некоторая локализация может быть добавлена ​​и для неамериканских значений

0 голосов
/ 28 марта 2012

Вы уже делаете это правильно.

...