Проблема с десятичным полем в django v3.2
После обновления с версии 3.1 до версии 3.2 я обнаружил проблему с точностью использования десятичного поля. Следующий пример - это небольшой код, который может повторно создать проблему.
from django.db import models
class Foo(models.Model):
amount = models.DecimalField(
null=False,
decimal_places=18,
max_digits=44)
# A simple insertion example
from api.models import Foo
from django.db.models import F
from decimal import Decimal
f = Foo.objects.create(amount=Decimal('0.5'))
f.amount = F('amount') - Decimal('0.4')
f.save(update_fields=['amount', ])
f.refresh_from_db()
print(f.amount)
Этот код генерирует
Я знаю, что это похоже на ошибку, но я догадывался, что упускаю что-то тривиальное.
Я использую mysql-8.0.19, и у меня такое же значение было в версиях 3.2 и 3.2.3 django.