Для этого потребуется полная перезапись столбца базы данных?
Нет, не будет.Я провел эксперимент с PostgreSQL, MySQL и SQLite, и преобразование целого числа в число с плавающей запятой в каждом случае проходит хорошо. Я также поставил некоторые значения как нулевые, чтобы соответствовать вашей ситуации.
Если у вас есть значение 3
, оно просто изменится на 3.0
.
Как оно могло бы масштабироваться, если бы подавляющее большинство значений были нулевыми?
Хорошо,так как вы сохраняете null=True
в конфигурации вашего поля, все нулевые значения останутся нулевыми, с этим проблем нет.Если вы удалите null=True
, вам может потребоваться указать значение default
.
При каких обстоятельствах это преобразование завершится неудачей?
Взятие столбца int и преобразование его в число с плавающей точкой (действительное) должноне ошибитесь, если вы найдете странный, странный и очень особенный случай, это будет очень большой вывод.
Если у вас есть сомнения по поводу результата миграции ...
... вы можетеСначала взгляните на миграцию SQL с помощью sqlmigrate , и, конечно, вы можете сделать резервную копию вашей базы данных.