2016-05-03 3 views
0

Объект Django FloatField s округляется после вызова save() после установки значений в командной строке.Django: Потеря точности поплавка при сохранении()

Пример:

object = Model.objects.get(id=1) 
object.floatfield = 23.99 
object.floatfield 
23.99 
object.save() 
object = Model.objects.get(id=1) 
object.floatfield 
23.0 

Что мне не хватает? Чем это вызвано?

EDIT: Модель:

class AbstractModel(models.Model): 
    class Meta: 
     abstract = True 
    float = models.FloatField(default=-1) 

class Model(AbstractModel): 
    pass 
+0

Как выглядит ваша модель? – Selcuk

+1

Можете ли вы создать [mcve]? – Sayse

+4

Был ли он IntegerField раньше? Вы перенесли его, если вы внесли изменения? – Selcuk

ответ

1

Похоже, модель Django и таблицы базы данных немного в неисправном состоянии. Вы можете проверить это, посмотрев определение столбца Model.float в своей базе данных. Не видя ваших миграций, я не могу точно сказать, что происходит.

В комментариях вы скажете, что вы отбросили миграцию, удалили файл миграции и затем попытались выполнить миграцию снова. Я рекомендую вам дать еще один снимок, но на этот раз DROP таблица в базе данных перед вами makemigration. Просто позвольте Django воссоздать таблицу, возможно, проще, чем пытаться выяснить, что происходит.

Смежные вопросы