2016-12-15 11 views
1

私のプロジェクトでは、クラスAから継承したモデルを、第3のモデルABmappingを介してGenericRelationを使用してタイプBのモデルにマッピングしています。Django 1.10:GenericRelationでモデルを削除するときのエラー

models.py:Djangoのadminに

class A(models.Model): 
    b = GenericRelation(B) 

    class Meta: 
     abstract = True 

class ABMapping(models.Model): 
    b = models.ForeignKey(B) 
    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    content_object = GenericForeignKey('content_type', 'object_id') 

class B(models.Model): 
    x = ... 
    y = ... 

私はAの子のオブジェクトを削除しようとすると、私はフィールドにキーワードu'object_id」を解決できません」、エラーを取得する選択肢は以下のとおりです。 x、y、id、abmapping " ABMappingからフィールドを取得しようとしているようですが、Bで見つけることができます。

ご覧のとおり、私はモデルを最小限に抑えましたが、問題はまだ発生します。

Aの子クラスのオブジェクトのすべてのABMappingsを削除しても、同じ問題が発生します。

StackOverflowに関する一見関連する質問は、カスケード削除が起こっていないと訴えている人に関連していますが、トップレベルの削除を行うことさえできません。

これらのモデルを持つものはすべて、しばらくの間正常に動作していますが、この問題は最初からうまくいかなかった管理者からは削除されています。私はここで何が欠けていますか?

ありがとうございます!

答えて

3

あなたのAモデルはBとの関係を持たず、ABMappingとの関係を持っています。したがって、Aの関係はGenericRelation(ABMapping)でなければなりません。

接続テーブルとして別のモデルを使用して多対多の関係が存在しますが、実際のManyToManyFieldにthrough = ABMapping引数を必要とするものが2つあります。 2つの外部キーの1つがGenericForeignKeyの場合

+0

...それは私が行方不明だったものでした!ありがとうございました。私はむしろ、(a)本来書いていたほど長い間働いたこと、(b)あなたが何かを壊すことなくシームレスに作業することを提案する変更を行うことがむしろ戸惑っている。しかし、私はそれを取るよ!再度、感謝します。 – TAH

関連する問題