django south меняет мои логические данные на init - PullRequest
1 голос
/ 05 января 2012

Чтобы вывести свою базу данных в файл 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, но с включенным югом я больше не могу использовать вышеуказанную команду, поскольку она говорит мне

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 ]

1 голос
/ 05 января 2012

schemamigration и migrate --fake не изменяют базу данных.У вас есть какое-либо устройство initial_data, которое можно перезагрузить при переносе?См. https://docs.djangoproject.com/en/1.3/howto/initial-data/

Попробуйте выполнить миграцию с помощью:

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

см. южный документ для получения дополнительной информации о параметрах

1 голос
/ 05 января 2012

Я не думаю, что --initial или --fake должны вообще изменять базу данных, поэтому я удивлен, что это изменит данные.С точки зрения того, почему вы получаете сообщение об ошибке «Не синхронизировано (использовать миграции)», я думаю, что это скорее всего потому, что вы подделали первоначальную миграцию.

Попробуйте отменить миграцию --fake и повторно применить начальную миграцию с помощью

python manage.py migrate --fake zero
python manage.py migrate

Затем вы сможете выполнить dumptdata

...