Когда я показываю деньги в шаблоне списка или подробно (только для чтения), я хотел бы иметь возможность отображать симпатичную версию поля, которая включает в себя символ валюты: «100,00 долларов США»Как представить денежное поле Django с символом валюты в шаблоне списка и простой десятичной для редактирования?
Однако, когда запись редактируется, я бы хотел отобразить «100.00» в поле TextInput без символа валюты.
Я создал пользовательские модели класса DecimalField и forms.DecimalField для представления денег в приложении Django.
Итак, я пытаюсь найти альтернативную версию значения поля в хорошем шаблоне (то есть правильно отформатирован для просмотра, но не идеально подходит для редактирования). Я знаю, что есть фильтры шаблонов, которые позволяют вам это сделать, но я считаю, что это помешало бы мне перебирать поля в форме и отображать их значения.
Если я могу добавить симпатичный атрибут в свой собственный класс полей, я могу проверить, существует ли он в шаблоне и отображать его. До сих пор я попытался это:
class MoneyFormField(forms.DecimalField):
def __init__(self, *args, **kwargs):
# I plan to add symbol localization code here
self.symbol= '$'
def prepare_value(self, value):
# assign pretty value to an attribute that template can access
self.pretty = self.pretty_value(value)
try:
return round(Decimal(value),2)
except:
return 0
def pretty_value(self, value):
if not value:
value = 0
return self.symbol + str(round(Decimal(value),2))
Проблема заключается в том, что для того, чтобы получить доступ к довольно значение в шаблоне, у меня есть доступ к первоначальной стоимости первой так что prepare_value() называется.
Если я пытаюсь напечатать довольно значение в шаблоне, как это ...
{% for field in payment_form %}
{{ field.field.pretty }} {{ field.value }} {{ field.field.pretty }}
{% endfor %}
тогда первый довольно игнорируется, но последние довольно отпечатки.
Если я могу получить эту работу, то я бы показывать симпатичное значение (или значение по умолчанию, если довольно не существует) в шаблоне так:
{% if field.field.pretty %}
{{ field.field.pretty}}
{% else %}
{{ field.value }}
{% endif %}
Кто-нибудь есть какие-либо предложения для изготовления альтернативное представление поля, доступного шаблону?
TL; DR- Как получить доступ к значению поля в поле формы init?