class Alrule(models.Model):
priority = models.PositiveIntegerField(unique=True)
rule = models.CharField(max_length=256)
我这个迁移模型的模型。之后,我决定把优先级字段与下拉列表AutoField
主键然后我的模型是这样的:
class Alrule(models.Model):
priority = models.AutoField(primary_key=True)
rule = models.CharField(max_length=256)
我犯了一个移民和迁移这种变化。
现在我又需要恢复。现在我做了如下修改:
class Alrule(models.Model):
priority = models.PositiveIntegerField(unique=True)
rule = models.CharField(max_length=256)
我做了一个迁移。 现在,当我迁移我收到以下错误:
AssertionError: A model can't have more than one AutoField.
我的理解是之前优先级字段设置为下拉列表AutoField并不会被删除。请帮助
我第一次迁移是这样的:
operations = [
migrations.RemoveField(
model_name='alrule',
name='id',
),
migrations.AlterField(
model_name='alrule',
name='priority',
field=models.AutoField(serialize=False, primary_key=True),
),
]
第二个迁移看起来是这样的:
operations = [
migrations.AddField(
model_name='alrule',
name='id',
field=models.AutoField(auto_created=True, primary_key=True, default=2, serialize=False, verbose_name='ID'),
preserve_default=False,
),
migrations.AlterField(
model_name='alrule',
name='priority',
field=models.PositiveIntegerField(unique=True),
),
]
你可以发布为两个步骤生成的hte迁移吗? – solarissmoke
@solarissmoke我已经发布了生成的迁移 – wrufesh