何日も頭を悩ませた後、誰かが私に正しいアプローチを教えてくれることを願っています. ページ、要素、スタイル、投稿の4つのモデルがあります。
これが私の単純化されたmodels.py/admin.pyの抜粋です:http://pastebin.com/uSHrG0p2
2文で:
要素は 1 つのスタイルと 1 つの投稿 (2 つの FK) を参照します。
ページは多くの要素を参照でき、要素は多くのページで参照できます (M2M)。
Page インスタンスの管理サイトでは、M2M 関係を「インライン」として含めました。要素インスタンスを選択するための複数の行があるようにします。1 行は次のようになります: [My Post A with My Style X][V]
私が望むのは、その 1 つのドロップダウンを 2 つのドロップダウンに置き換えることです。1 つは Post のすべてのインスタンスを持ち、もう 1 つは Style のすべてのインスタンスを持ちます (Element インスタンスをインプレースで作成します)。そのため、1 つの行が Element 管理サイトのようになります: [My Post A][V] [My Style X][V]
簡単に聞こえますが、ModelForms、ModelAdmins、Formsets などを 2 日間読んで実験した後、完全に迷ってしまいました。Django 管理機能内のカスタム ビュー/フォームなしでそれを行うことはできますか?
私のアプローチの 1 つは、このように PageAdminForm から Post/Style インスタンスにアクセスし、そこから手動でフォーム ウィジェットを作成しようとすることでした...しかし、そうすることができませんでした:
p = Page.objects.get(pk=1)
f = PageAdminForm(instance=p)
f.base_fields['elements'].choices.queryset[0].post
私が行く必要があるアドバイスやヒントはありますか?お時間をいただきありがとうございます!