2011-01-15 5 views
0

私は、次のモデルではDjango 1.2.3でdumpdataの使用しています:Djangoのdumpdataのとloaddataのは、多対多の中間モデルのために働いていない

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フィクスチャがfooでFOOSに関連付けられているバーをシリアライズ私は治具でloaddataのを実行しようとするとはAttributeErrorに結果のオブジェクト、:

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

私がreadたものに基づいて、dumpdataのは、M2Mをシリアル化しないように固定されている可能性があり、またはloaddataのは、適切に対処するために固定し、それはそうではないようです。私は自然の旗を試しましたが、まだ運がありません。何か案は?

ありがとうございます。

+0

私は同じ動作を見ています。なぜm2mフィールドで動作しないのですか?それは私にはかなり基本的なようです。ダンプデータのほかに、json形式のm2mフィールドを含むデータを得ることができますか? – user1328021

答えて

0

あなたの什器で何をする必要があるかによって、django_extensionパッケージのコマンド "dumpscript"は、複雑な関係を持つフィクスチャを扱うのに本当に便利です。
ファイルにプライマリキーは使用されていません。単にオブジェクトを使用するpythonスクリプトなので、object.save()を呼び出すだけでデータベース全体を再作成できます。

+0

これは、dumpdata/loaddataでの問題の答えにはなりません。中間のm2mモデルはすべて複雑ですか? – Neil

+0

dumpscriptのように見えますが、中間モデルでm2mをサポートしていません(問題48) – Neil

+0

私はこの種類のfkey(through = ...)で使用しましたが、google codeサイトは更新されず、github ... –