2017-04-03 3 views
1

previous questionと同様、ModelAdmin内で関連モデルを使用しようとしています。 (これは管理者の両方のビューで利用できるようにしたいからです)今回は、新しいParentalManyToManyFieldまたはちょうど普通のManyToManyFieldを使用しています。ModelAdminで逆(ペアレンタル)ManyToManyFieldを使用

Unknown field(s) (aes) specified for B

が、私はまだできていない何をしようとしているか、それともました:Field Error

class B(Model): # or Orderable 
    ... 
    edit_handler = TabbedInterface([ 
     ObjectList([ 
      FieldPanel('aes', widget=CheckboxSelectMultiple), 
     ], heading=_('Aes'), 
     ), 
    ]) 

class A(ClusterableModel): 
    ... 
    bees = ParentalManyToManyField(
     B, 
     related_name='aes', 
     blank=True, 
    ) 
    ... 
    edit_handler = TabbedInterface([ 
     ObjectList([ 
      FieldPanel('bees', widget=CheckboxSelectMultiple), 
     ], heading=_('Bees'), 
     ), 
    ]) 

ページに到達しようと、私は受け取る:

は、私は次の構造を書きました私は一歩忘れましたか?

答えて

2

ParentalManyToManyFieldは親モデルで定義する必要があります(ここではBとすることを前提としています - つまり、modeladminインターフェイスはBのインスタンスを編集するように設定されており、複数のAがリンクされています) related_nameではなくnameです。また、それは子ではなくClusterableModelとして定義された親モデルでなければなりません。

class B(ClusterableModel): 
    aes = ParentalManyToManyField('A', blank=True) 

    edit_handler = TabbedInterface([ 
     ObjectList([ 
      FieldPanel('aes', widget=CheckboxSelectMultiple), 
     ], heading=_('Aes')), 
    ]) 

class A(Model): # doesn't need to be Orderable, because M2M relations don't specify an order 
    ... 
+0

私の問題は解決しないでしょうか?あまり明確ではないかもしれませんが、両方の管理ビューで関係にアクセスしたいと思います。それで、関係を変えることなくこれを達成する方法はありますか? – Dekker

+1

ParentalManyToManyFieldは双方向から編集することを目的としたものではありません。ページモデル用に設計されていますが、論理的には可能ではありません(バージョン管理とモデレーションのワークフローのために関係が1つのモデルまたは他のモデルに属している必要があります)。あなたがやっていることは、おそらくプレーンなManyToManyFieldに近いでしょう。あなたがそれを試してみるとどうなりますか? (私はすぐには動作しない理由を見ることはできませんが、私はセットアップをテストしたことはないと思っています...) – gasman

+0

これは私の初期の考えでもあり、 'ManyToManyField'を使っていましたが、 'ParentalManyToManyField':' FieldError:B 'に指定された不明なフィールド(aes)のようにフィールドエラーです。 – Dekker

関連する問題