django south正在更改init上的布尔数据

时间:2012-01-05 01:11:22

标签: python django django-south

要将我的数据库输出到json文件,我通常会这样做

python manage.py dumptdata --indent=4 > mydata.json

但执行以下两个命令以设置南方时:

python manage.py schemamigration myproj --initial
python manage.py migrate myproj --fake

我注意到mytable中的两个布尔值从FALSE切换为TRUE!我看到从我的GUI Web Interface与数据库进行交互,然后更密切地比较更改和损坏的内容我想比较json和json但是启用了south我不能再使用上面的命令,因为它告诉我

Not synced (use migrations):
 - myproj

我的表格中有条目受影响,我可能会有更多受影响的数据,我还没有发现。

class MyConfig(models.Model):
    name = models.CharField(max_length=64)
    myConfigName = models.CharField(max_length=64, unique=True)
    myA = models.ForeignKey(MyA)
    myB = models.ForeignKey(MyB)
    myBoolA = models.BooleanField()
    myBoolB = models.BooleanField()
    myBoolC = models.BooleanField()

    class Meta:
        unique_together = ('name', 'myA', 'myB')

    def __unicode__(self):
        return '%s_%s_%s' % (self.myA.name, self.myB.name, self.name)

2 个答案:

答案 0 :(得分:1)

我认为--initial或者--fake都不应该改变数据库,所以我很惊讶它会修改数据。就您收到“未同步(使用迁移)”错误的原因而言,我认为这可能是因为您伪造了初始迁移。

尝试取消迁移--fake并使用

重新应用初始迁移
python manage.py migrate --fake zero
python manage.py migrate

然后,您应该可以执行dumptdata

答案 1 :(得分:1)

schemamigrationmigrate --fake不会修改数据库。你有任何可以在迁移时重新加载的initial_data fixture吗?见https://docs.djangoproject.com/en/1.3/howto/initial-data/

尝试迁移:

python manage.py migrate --no-initial-data

有关选项的更多信息,请参阅south doc