创新互联Django4.0教程:Django4.0 迁移-历史模型

当你运行迁移时,Django 正在使用存储在迁移文件中的模型的历史版本。如果你使用 RunPython 操作编写 Python 代码,或者你的数据库路由上有 ​allow_migrate​方法,则你 需要使用 这些模型的历史版本而不是直接导入它们。

创新互联建站是一家集网站建设,通山企业网站建设,通山品牌网站建设,网站定制,通山网站建设报价,网络营销,网络优化,通山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

如果你直接导入模型而不是使用历史模型,则迁移 最初可能会工作 但将来在尝试重新运行旧迁移时会失败(通常,当你设置新安装并运行所有迁移时 以建立数据库时)。
这意味着历史模型的问题可能不会立即显现。如果遇到这种故障,可以编辑迁移以使用历史模型,而不是直接导入并提交这些更改。

因为不可能序列化任意的 Python 代码,这些历史模型不会有你定义的任何自定义方法。然而,它们将具有相同的字段、关系、管理器(仅限于那些具有 ​use_in_migrations = True​)和 ​Meta​选项(也有版本控制,因此它们可能与当前的不同)。

这意味着在迁移中访问对象时,将不会对对象调用自定义的 ​save()​ 方法,也不会有任何自定义构造函数或实例方法。适当的计划一下吧!

字段选项中对函数的引用,例如 ​upload_to​和 ​limit_choices_to​以及具有 ​use_in_migrations = True​的模型管理器声明,都会在迁移中序列化,因此只要有迁移引用它们,这些函数和类就需要保留。任何 自定义模型字段 也需要保留,因为这些都是直接由迁移导入的。
此外,模型的具体基类是以指针的形式存储的,所以只要有一个包含对它们的引用的迁移,你就必须始终将基类保留在身边。从好的方面来说,这些基类的方法和管理器都是正常继承的,所以如果你一定需要访问这些,你可以选择将它们移到一个父类中。
要删除旧的引用,你可以 压缩迁移 或者,如果引用不多,把它们复制到迁移文件中。

文章名称:创新互联Django4.0教程:Django4.0 迁移-历史模型
文章分享:http://www.shufengxianlan.com/qtweb/news11/249811.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联