【问题标题】:moving models to a new django application将模型移动到新的 django 应用程序
【发布时间】:2013-11-16 20:11:23
【问题描述】:

在我的 django 项目中,我有一个处理两个模型(两个 mysql 表)的应用程序,我注意到我最好用以前的模型创建一个新应用程序。所以问题是:我怎么能用南做呢?鉴于我知道另一种没有南方的方法,它包括创建一个新应用程序 syncdb,然后使用 shell/python 脚本将数据从旧表移动到新表,最后删除旧表。但我想成为一个绅士和时尚的人:D

提前致谢

【问题讨论】:

    标签: django django-models django-south


    【解决方案1】:

    基本上你会做你描述的南方迁移。

    1. 创建初始迁移以定义架构
      schemamigration <new_app_name> --initial
    2. 创建data migration 以将数据从一个应用程序复制到另一个应用程序 datamigration <new_app_name> <migration_name> 您需要修改在 .forward() .backward() 方法中创建的文件,以定义您希望如何移动数据

    3. 在初始应用程序上创建架构迁移以删除表 schemamigration <original_app_name> -auto

    由于需要数据存在于原应用中,调用迁移时先应用新应用,再应用原应用。

    【讨论】:

    • 谢谢,它看起来是解决它的最佳方法,但是在 schemamigration --auto new_app 时出现错误,例如:CommandError: One or more models did not validate: original_app.internaute: Accessor for field 'user' clashes with related field 'User.internaute'. Add a related_name argument to the definition for 'user'.original_app: Reverse query name for 'user' clashes with related field 'User.internate'. Add a related_name argument to the definition for 'user'.new_app.internaute: Accessor for field 'user' clashes with related field 'User.internaute'. Add a related_name argument to
    • 所以我在mysql终端重命名了表:/,以避免这一切
    猜你喜欢
    • 2019-05-17
    • 2010-11-18
    • 1970-01-01
    • 2012-07-14
    • 2018-07-29
    • 2013-10-16
    • 2023-02-09
    • 2015-06-04
    • 2021-12-29
    相关资源
    最近更新 更多