编辑:我理解为什么会这样 . 这是因为initial_data.json文件的存在 . 南方希望在迁移后添加这些装置,但由于场的独特属性而失败 .
嗨,
我改变了我的模型:
class Setting(models.Model):
anahtar = models.CharField(max_length=20,unique=True)
deger = models.CharField(max_length=40)
def __unicode__(self):
return self.anahtar
对此,
class Setting(models.Model):
anahtar = models.CharField(max_length=20,unique=True)
deger = models.CharField(max_length=100)
def __unicode__(self):
return self.anahtar
架构迁移命令已成功完成,但是,尝试迁移会给出以下错误:
IntegrityError:重复键值违反唯一约束“blog_setting_anahtar_key”
详情:Key(anahtar)=(blog_baslik)已经存在 .
我希望保持该字段的独特性,但仍然可以迁移该字段 . 顺便说一下,只要db中的其他表保持不变,该表上的数据丢失是可以接受的 .
1 回答
它实际上是syncdb每次运行initial_data.json的默认行为 . 来自Django文档:
见:docs
就个人而言,我认为每次发生更改时需要重新加载的初始数据的用例都会被延迟,所以我从不使用initial_data.json .
由于您使用的是South,因此更好的方法是在迁移所需的特定夹具上手动调用loaddata . 对于初始数据,这将在您的0001_initial.py迁移中进行 .
见:http://south.aeracode.org/docs/fixtures.html
另外,请记住夹具的路径是相对于项目根目录的 . 所以,如果您的夹具位于"myproject/myapp/fixtures/my_fixture.json"
call_command
,实际上看起来像:当然,你的灯具不能命名为'initial_data.json',否则,默认行为将接管 .