【问题标题】:Control the name for a constraint in django在 django 中控制约束的名称
【发布时间】:2019-07-12 19:39:29
【问题描述】:

我有一个问题,我需要将 django 生成的 FOREIGN KEY 约束替换为 ON DELETE CASCADE 约束。我想要做的是扩展 django 生成的迁移以使用RunSQL 实现以下内容:

  1. DROP FOREIGN KEY删除Django生成的约束
  2. 使用ON DELETE CASCADE 创建新约束。

要执行第一个操作,我需要 FOREIGN KEY 约束的名称,但这是由 django 自动生成的。

如何强制使用 FOREIGN KEY 约束的名称? (不是 FOREIGN KEY 列的名称,这是另一回事)

【问题讨论】:

    标签: python mysql sql django mariadb


    【解决方案1】:

    有一个简单的解决方案:首先不要让 django 创建外键约束。这可以通过db_constraint=False 实现:

    tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE, null=True, db_constraint=False)
    

    之后,您可以使用migrations.RunSQL 设置任何您喜欢的约束。

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 2016-04-12
      • 2017-04-18
      相关资源
      最近更新 更多