돈을 목록 템플릿 또는 세부 정보 (읽기 전용) 템플릿으로 표시 할 때 통화 기호가 포함 된 필드 값의 예쁜 버전을 표시하고 싶습니다. "$ 100.00"Django money 필드를 목록 템플릿에서 통화 기호로 나타내고 편집을 위해 소수점 이하를 표시하는 방법은 무엇입니까?
그러나 레코드를 편집하는 중, 통화 기호없이 TextInput 상자에 "100.00"을 표시하려고합니다.
나는 내 장고 응용 프로그램에서 돈을 나타 내기 위해 사용자 정의 models.DecimalField 클래스와 forms.DecimalField 클래스를 만들었습니다.
그래서 템플릿에 필드 값의 대체 버전 (예 :보기에 적합하지만 편집하기에 적합하지 않은 형식)을 사용하는 방법을 찾고 있습니다. 나는 이것을 수행 할 수있는 템플릿 필터가 있다는 것을 알고 있지만 폼의 필드를 반복하고 값을 표시하는 것을 막을 수 있다고 생각합니다.
사용자 정의 필드 클래스에 pretty 속성을 추가 할 수 있다면 템플릿에 존재하는지 확인할 수 있습니다.
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- 양식 필드의 필드의 값에 액세스하려면 어떻게해야합니까?