python - Django 迁移 - 将模型从 Int 更改为 CharField 并从选择选项中预填充

标签 python django django-migrations

在模型中,我有一个映射到 CHOICES 元组的 IntegerField。该字段的要求已更改为更新该元组中的选项将需要过于频繁的维护,因此我决定将其更改为 CharField

有没有办法可以在迁移中执行此操作,或者创建一个新列,使用适当的值更新并删除旧列会更好吗?

最佳答案

您已经更改了架构,因此您肯定需要进行架构迁移,Django 会使用 makemigrations 命令为您完成此操作。

但是由于您还更改了列的类型,其中填充了整数,现在应该转换为字符,Django 不会自动为您执行此操作,您需要编写 Data migrations .

根据我的经验,最好生成多个迁移;创建一个新的 CharField,然后通过 RunPython 写入这个新列。然后,运行第二次迁移,删除原始 IntegerField 并将新的 CharField 列重命名为原始列。 (我猜这是你自己建议的)

关于python - Django 迁移 - 将模型从 Int 更改为 CharField 并从选择选项中预填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39497266/

相关文章:

python - 使用 BeautifulSoup 解析 <style> 标签内的 html 注释

python -/django.db.utils.IntegrityError : NOT NULL constraint failed/after python manage. py 迁移应用程序零

python - 如何使用 python-requests 修复 flask 中的 "too many values to unpack"

python - Magento SOAP v1 过滤器不过滤(Python Suds)

python - 从列表列表中删除重复内容而不保留任何顺序

python - 失败 : Database access not allowed, 使用 "django_db"标记,或 "db"或 "transactional_db"装置启用它

python - 属性装饰器急切加载和一般使用 Django 的急切加载

python - Django 在用户模型中显示多对多关系

python - 单元测试以检查未生成的迁移

django - 如何引入独特且有冲突的数据?