为还没有任何迁移的 Django 项目创建迁移

Posted

技术标签:

【中文标题】为还没有任何迁移的 Django 项目创建迁移【英文标题】:Creating migrations for a Django project that does not have any migrations already 【发布时间】:2022-01-10 02:41:06 【问题描述】:

我正在为一个有 13 年历史的 Django 项目的客户工作。他们在构建项目时没有实施迁移,因此该项目目前缺乏迁移。我尝试创建迁移,然后执行数据转储并将数据加载到新数据库中以对其进行测试。我遇到了各种各样的错误,想重新开始。

所以我的问题是这样的。我应该采取哪些步骤来在项目中实施迁移,以便我们可以使用迁移继续前进? django 版本已更新到 3.0.5,并且使用了许多 GenericForeignKey,这可能会使这更加棘手。最初创建迁移时,我被告知使用假标签,但不完全理解这意味着什么。

对我应该采取的步骤的任何帮助将不胜感激。为了客户的隐私/安全,我不想只分享他们的大量代码,但如果它可以帮助某人确定我应该采取的步骤,我可以分享其中的一部分。

供参考。在最初创建迁移文件然后尝试使用 dumdata/loaddata 命令后,我通常会收到一条错误消息,指出存在与内容类型相关的重复条目或 django_site 域的重复条目。客户端根据他们在世界上的哪个位置登录设置了域,因此站点“名称”是唯一的,但“域”是相同的。

(1062, "Duplicate entry 'www.example.com' for key 'django_site.django_site_domain_a2e37b91_uniq'")

【问题讨论】:

【参考方案1】:

如果您谈论的是在本地工作,只需删除所有迁移(migrations/__init__.py 除外。)和 makemigrations 再次。

如果您正在生产,您可以安全地使用一次--fake

如果您知道如何处理迁移并且文件很少,您也可以更改旧迁移。

我已经回答了类似的问题here。

【讨论】:

目前还没有任何迁移文件。

以上是关于为还没有任何迁移的 Django 项目创建迁移的主要内容,如果未能解决你的问题,请参考以下文章

django 项目中mysql 的编码,数据库迁移问题

django迁移数据库报错解决

Django 1.7 - 创建初始迁移

使用Django框架创建项目和运行(包括默认数据库迁移)

使用Django框架创建项目和运行(包括默认数据库迁移)

使用Django框架创建项目和运行(包括默认数据库迁移)