Django - 删除 M2M 字段但保留连接表

Posted

技术标签:

【中文标题】Django - 删除 M2M 字段但保留连接表【英文标题】:Django - delete M2M field but keep join table 【发布时间】:2021-12-10 18:17:24 【问题描述】:

是否可以从模型中删除 M2M 字段并保留连接表?

上下文: 我正在尝试将模型添加到现有的 M2M 字段中,如 post

中所述

但是这样做会导致在部署期间访问旧表时生产应用程序崩溃 - 迁移和代码更新之间的短暂窗口,当旧代码将尝试访问新数据库片刻 - 没有旧的表。

【问题讨论】:

【参考方案1】:

您可以在运行manage.py migrate 时使用--fake 标志。这将生成一个迁移文件,说明模型字段已被删除,并将其标记为已应用于数据库迁移表中,但不会实际执行 SQL 以删除相应的表等。Read more here

【讨论】:

以上是关于Django - 删除 M2M 字段但保留连接表的主要内容,如果未能解决你的问题,请参考以下文章

Django 维护模型对象的版本

在 M2M 字段 Django 中过滤标签

如何避免 django“与相关 m2m 字段冲突”错误?

Django 通过查询相关表来访问 M2M 字段的属性

Django:使用“in”列表中的每个值进行 M2M 字段查询

Django 删除主对象删除上的所有 M2M 相关对象