python - 如何将一个字段从一个模型移动到另一个模型,同时仍然保留数据?

标签 python django django-models

为了简化,我有一个模型,比如说,

class Parent(models.Model):
    field_a = models.CharField(max_length=40)

还有另一个包含图像字段的模型,它通过外键将自身绑定(bind)到父实例:

class ParentPicture(models.model):
    parent = models.ForeignKey(Parent)
    picture = models.ImageField(upload_to=upload_path)
    is_used = models.BooleanField(default=False)

原计划是支持parent多张图片,每次只能使用一张,现在想只支持一张,并包含在parent model中,所以ParentPicture 可以被销毁,并且 Parent 看起来像这样:

class Parent(models.Model):
    field_a = models.CharField(max_length=40)
    picture = models.ImageField(upload_to=upload_path)

我不确定将 picture 字段移动到新模型的最佳方法,并包括 ParentPicture 中具有 is_used 的实例 标志。

有没有一种简单的方法可以使用 Django 自动执行此操作,或者我是否需要更改 Parent 模型,迁移更改,然后运行脚本来遍历 ParentPicture 模型并适当复制,然后完成后,删除ParentPicture 模型?

感谢您的帮助/建议!

最佳答案

我认为没有一种“自动”的方式来移动字段,所以你可以这样做:

  1. Parent类中添加picture字段
  2. 生成并运行模式迁移
  3. 编写并运行 data migration用模型 ParentPicture
  4. 中的值填充新的 picture 字段
  5. 删除旧的/过时的模型/字段,生成新的模式迁移并运行它

关于python - 如何将一个字段从一个模型移动到另一个模型,同时仍然保留数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37171077/

相关文章:

python - 在 Django 中批量创建相关模型

python - 限制子类的外键选择

python - 获取线程变量的参数

python - 让 Sublime 3 + Python 3 在 OS X 上协同工作

python - Selenium webdriver python 从网站查找动态文本

Pythonanywhere - 错误代码 : Unhandled Exception

python - Django 中的年份字段

python - subprocess.check_output 不接受长参数

json - Django Cors 允许访问控制允许 header

javascript - 关于 django 模板中表单字段值的动态隐藏/取消隐藏选项卡