oro*_*aki 4 django django-templates
以下字段用于将货币格式化为两位十进制(量化).您可以看到它返回<decimal>.quantize(TWOPLACES)存储的十进制版本.但是,当我在Django管理员中查看它时,它不会这样做.如果我投入50到使用现场CurrencyField(),并查看它在管理,我得到50VS 50.00.这是为什么?
from django.db import models
from decimal import Decimal
class CurrencyField(models.DecimalField):
"""
Only changes output into a quantized format. Everything else is the same.
"""
def __init__(self, *args, **kwargs):
kwargs['max_digits'] = 8
kwargs['decimal_places'] = 2
super(CurrencyField, self).__init__(*args, **kwargs)
def to_python(self, value):
try:
return super(CurrencyField, self).to_python(value).quantize(Decimal('0.01'))
except AttributeError:
return None
Run Code Online (Sandbox Code Playgroud)
更新:我尝试return 'Hello World'代替,return super(CurrencyField, self).to_python(value).quantize(Decimal('0.01'))它甚至没有在shell中显示'Hello World'.它又熄灭50了.这是否意味着当我访问模型的属性时,CurrencyField()它不会调用to_python()?
也许你可以尝试将它添加到你的领域:
__metaclass__ = models.SubfieldBase
Run Code Online (Sandbox Code Playgroud)
另见这里.
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |