Типы возвращаемых переменных DecimalField - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть модель, которая выглядит примерно так:

class Item(models.Model):
    value = models.DecimalField(default=0.0, decimal_places=4, max_digits=20)

Теперь предположим, что у меня есть три элемента:

a = Item()
a.value = 1.20

b = Item()
b.value = 2  

c = Item()
c.value = Decimal('20.20')

Когда я получаю доступ к значениям модели, я получаю:

a.value = 1.2 <float>
b.value = 2 <int>
c.value = Decimal('20.20')

Почему DecimalField это делает? Разве я не могу получить значения всегда как десятичное число Python?

1 Ответ

0 голосов
/ 15 ноября 2019

Если вы save() каждый из созданных Item с после изменения значения value, Django преобразует их в десятичные числа Python.

a = Item()
a.value = 1.20
a.save()
item_a = Item.objects.get(id=a.id)
print(item_a.value)  # will be Decimal('1.20')
...