我当前的模型设置如下:
Class MyClass(models.Model):
my_field = models.CharField(max_length=100,...)
为了论证,所有值都是"foo"
或"bar"
。
我希望将此转换为PositiveSmallIntegerField,而不是使用以下设置:
Class MyClass(models.Model):
FOO = 0
BAR = 1
FOO_BAR_CHOICES = (
(FOO, 'foo')
(BAR, 'bar')
)
my_field = models.PositiveSmallIntegerField(choices=FOO_BAR_CHOICES,...)
有什么方法可以将旧my_field
CharField转换为PositiveSmallIntegerField并保留所有旧数据?或者我是否必须向模型添加新字段,通过对旧字段运行脚本来填充值,删除旧字段,然后将PositiveSmallIntegerField重命名为旧CharField的名称?
答案 0 :(得分:1)
没有Django模型ChoiceField?
我认为您可以在不丢失任何数据的情况下为CharField添加“选择”。见https://docs.djangoproject.com/en/1.9/ref/models/fields/#choices
但是,如果要将字段类型更改为“PositiveIntegerField”,则必须执行多个步骤。
关于Django迁移的文档:https://docs.djangoproject.com/en/1.9/ref/django-admin/#makemigrations
希望这有帮助。