django自定义字段接受并存储小数,但以整数形式返回输出

abh*_*day 5 django django-models python-2.7 django-custom-field django-1.6

我有一个问题声明,我需要我的字段将值存储为十进制,但是在调用它时,该字段应返回一个四舍五入的Integer值

mymodel.myfield = 12.61

mymodel.save()

输入项

mymodel.myfield

输出量

13

如果可能的话

mymodel.myfield.get_raw

输出量

12.61

我可以使用Django自定义模型字段吗?

class MyField(models.DecimalField):

    def __init__(self, verbose_name=None, name=None, max_digits=None,
                 decimal_places=None, **kwargs):
        super(MyField, self).__init__(*args, **kwargs)

    def get_raw(self, value):
        return value

    def to_python(self, value):
        if value is None:
            return value
        try:
            return decimal.Decimal(value)
        except decimal.InvalidOperation:
            raise exceptions.ValidationError(
                self.error_messages['invalid'],
                code='invalid',
                params={'value': value},
            )
Run Code Online (Sandbox Code Playgroud)