Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 控制django中约束的名称_Python_Mysql_Sql_Django_Mariadb - Fatal编程技术网

Python 控制django中约束的名称

Python 控制django中约束的名称,python,mysql,sql,django,mariadb,Python,Mysql,Sql,Django,Mariadb,我的问题是需要将django生成的外键约束替换为DELETE CASCADE上的约束。我想做的是扩展django生成的迁移,用RunSQL实现以下功能: 使用Drop外键删除Django生成的约束 使用删除级联上的创建新约束 要执行第一个操作,我需要外键约束的名称,但这是由django自动生成的 如何强制指定外键的名称约束?(不是外键列的名称,这是另一回事)有一个简单的解决方案:首先不要允许django创建外键约束。这可以通过db_constraint=False实现: tenant = mod

我的问题是需要将django生成的
外键
约束替换为DELETE CASCADE上的
约束。我想做的是扩展django生成的迁移,用
RunSQL
实现以下功能:

  • 使用Drop外键删除Django生成的约束
  • 使用删除级联上的
    创建新约束
  • 要执行第一个操作,我需要外键约束的名称,但这是由django自动生成的


    如何强制指定
    外键的名称
    约束?(不是外键列的名称,这是另一回事)

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

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

    在这之后,您可以使用
    迁移设置任何您喜欢的约束。RunSQL

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

    tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE, null=True, db_constraint=False)
    
    之后,您可以使用
    migrations.RunSQL
    设置任何您喜欢的约束