Django - 迁移外键字段类型与当前类型不匹配

Ale*_*dor 5 python sql-server django django-migrations

我正在使用 MSSQL 数据库,并且在 Django 进入展会之前我已经创建了一些表,因此使用Inspectdb我获得了带有 Meta 选项的模型managed=False。然后我创建了其他与 Django 迁移相关的内容。这些模型是这样的:

class ModelAlreadyCreated(models.Model):
    # This PK field is set as varchar(16)
    id = models.CharField(primary_key=True, db_column='CVE', max_length=16)
    ...other fields

    class Meta:
        managed=False

class DjangoModel(models.Model):
    model_ac_fk = models.ForeignKey(ModelAlreadyCreated)
    ... other fields
Run Code Online (Sandbox Code Playgroud)

当我使用创建迁移文件时,makemigrations我得到:

migrations.CreateModel(
        name='DjangoModel',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('model_ac_fk', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ModelAlreadyCreated')),
            ...
        ],
    ),
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切似乎都正常,但使用migrate命令时会显示此错误:

django.db.utils.OperationalError: (1778, "Column 'CVE' is not the same data 
type as referencing column 'model_ac_fk' in foreign key 'model_ac_fk_fk_CVE'.DB-Lib error 
message 20018, severity 16:\nGeneral SQL Server error: Check messages from 
the SQL Server\nDB-Lib error message 20018, severity 16:\nGeneral SQL Server 
error: Check messages from the SQL Server\n")
Run Code Online (Sandbox Code Playgroud)

出现此错误是因为 Django 正在尝试创建nvarchar(16)外键字段,而实际引用的字段是varchar(16)

我可以使用 SQLsqlmigrate并更改字段类型,然后直接在数据库中运行它并伪造迁移,但我想知道是否有任何方法可以使用 Django 进行迁移而不接触任何 SQL 脚本?