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