Django dumpdata и loaddata не работают для модели «многие ко многим» - PullRequest
0 голосов
/ 15 января 2011

Я использую dumpdata с Django 1.2.3 на следующей модели:

class Bar(models.Model):
    ...

class Foo(models.Model):
    bars = models.ManyToManyField(Bar, through="Foo_bar", blank=True, null=True)
    ...

class Foo_bar(models.Model):
    foo = models.ForeignKey(Foo)
    bar = models.ForeignKey(Bar)
    status = models.IntegerField()
    ...

Приспособление json сериализует столбцы, связанные с Foos в объектах Foo, что приводит к ошибке AttributeError при попытке запустить loaddataс помощью приспособления:

AttributeError: Cannot set values on a ManyToManyField which specifies an intermediary model.  Use App.Foo_bar's Manager instead.

Исходя из того, что я прочитал , возможно, что dumpdata была исправлена, чтобы не сериализовать m2m, или loaddata была исправлена ​​для правильного обращения с ними, но это не так.кажется так.Я попробовал естественный флаг, все еще не повезло.Есть идеи?

Заранее спасибо.

1 Ответ

0 голосов
/ 15 января 2011

В зависимости от того, что вам нужно сделать с вашими приборами, команда " dumpscript " из пакета django_extension действительно полезна для обработки приборов со сложными связями.
В файле не используются первичные ключи, это всего лишь сценарий Python, который использует только объекты, и поэтому может воссоздать всю вашу базу данных просто с помощью вызовов object.save().

...