Пользовательское поле django принимает и сохраняет десятичное число, но возвращает результат в виде целого числа - PullRequest
3 голосов
/ 09 марта 2019

У меня есть постановка задачи, где мне нужно, чтобы мое поле сохраняло значение как десятичное, но при вызове его поле должно возвращать округленное целочисленное значение

Пример

mymodel.myfield = 12,61

mymodel.save ()

Input

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},
            )
...