首页 > 解决方案 > Django 迁移已通过,但字段未删除

问题描述

我有一个生产中的 django 应用程序,上周我想从我的用户模型中删除一个字段 review_rate,以将其替换为与另一个表的 M2M 关系。

产生的迁移是:

# Generated by Django 2.2.1 on 2021-07-20 16:41

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [
        ('api', '0080_auto_20210708_1539'),
    ]

    operations = [
        migrations.SeparateDatabaseAndState(state_operations=[
            migrations.CreateModel(
                name='Rate',
                fields=[
                    ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ],
                options={
                    'db_table': 'api_project_reviewers',
                },
            ),
            migrations.RemoveField(
                model_name='user',
                name='review_rate',
            ),
            migrations.AlterField(
                model_name='project',
                name='reviewers',
                field=models.ManyToManyField(related_name='review_project', through='api.Rate',
                                             to=settings.AUTH_USER_MODEL),
            ),
            migrations.AddField(
                model_name='rate',
                name='project',
                field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.Project'),
            ),
            migrations.AddField(
                model_name='rate',
                name='user',
                field=models.ForeignKey(limit_choices_to={'reviewer': True},
                                        on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
            ),
        ])

    ]

它在本地运行良好。

当我部署它时,我可以看到我的迁移存在并使用 showmigrations 命令传递,但是,当我想从管理区域添加用户时,我得到了这个异常:

“review_rate”列中的空值违反了非空约束。

如果我转到我的容器,选择任何用户并尝试在其上获取 review_rate,我会按预期收到此错误:

AttributeError:“用户”对象没有属性“review_rate”

所以 review_rate 字段似乎没有被删除,但我的新费率字段存在..

有人可以解释如何解决它吗?谢谢。

标签: djangomigration

解决方案


推荐阅读