使用 Django 未检测到的自定义 SQL 添加的模型字段

Sha*_*uri 1 django django-models

我已在模型中添加了一个字段。但我已通过自定义 sql 查询(Alter Field)将该字段添加到数据库中的模型中。现在,当我尝试创建其他迁移文件时,Django 会创建迁移以将字段添加到数据库中的该模型。如何让 django 不这样做?

在添加对另一个字段的引用之前,我需要修改该字段的排序规则。Django Alter Field确实Alter Table-Add Field,AlterTable-Add Reference,而我想要Alter Table-Add Field,Modify Field Collat​​ion,AlterTable-Add Reference。自定义 SQL 查询写入迁移文件内。

Mat*_*tle 6

您可以使用RunSQL创建具有正确排序规则的字段。调用 RunSQL 时,使用state_operations参数来提供 SQL 代码所做的状态更改,以使 Django 保持最新状态。

这是 Django 文档中的一个示例:

from django.db import migrations

class Migration(migrations.Migration):

    operations = [
        migrations.RunSQL(
            "ALTER TABLE musician ADD COLUMN name varchar(255) NOT NULL;",
            state_operations=[
                migrations.AddField(
                    'musician',
                    'name',
                    models.CharField(max_length=255),
                ),
            ],
        ),
    ]
Run Code Online (Sandbox Code Playgroud)