【发布时间】:2016-02-01 22:04:24
【问题描述】:
我有一个这样的模型
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 我已经发布了生成的迁移
标签: django python-2.7 django-models