2011-03-02 119 views
0

幾天後,我只是希望有人能指點我正確的方法。 我有4個型號:頁面,元素,樣式和發佈。Django管理員:內聯2個外鍵Many2Many模型

這裏是我的simplyfied models.py/admin.py摘錄:http://pastebin.com/uSHrG0p2

在2句:

一個元素引用1種樣式和1個帖子(2個FKS)。

一個頁面可以引用很多元素,元素可以被多個頁面引用(M2M)。

在頁面實例的管理網站上,我將M2M關係作爲「內聯」。這樣我有多行來選擇元素實例。 一排看起來像:[我的貼子A與我的風格X] [V]

我想要的是用2個下拉菜單替換一個下拉菜單。一個具有Post的所有實例,另一個具有Style的所有實例(就地創建元素實例)。因此,一行看起來類似於元素管理網站:[我的帖子A] [V] [我的風格X] [V]

聽起來很容易,但我完全失去了閱讀和實驗2天后使用ModelForms,ModelAdmins,Formsets ...。 我可以在Django管理功能中沒有自定義視圖/表單嗎?

我的一個方法是從這樣的PageAdminForm訪問郵報/風格的情況下,試圖從一個手動創建一個表單控件......但未能如願:

p = Page.objects.get(pk=1) 
f = PageAdminForm(instance=p) 
f.base_fields['elements'].choices.queryset[0].post 

任何意見或提示我需要走哪條路? 謝謝你的時間!

回答

1

我正是我與元第3 ForeignKey的去除M2M領域和鏈接元素添加到頁面後想:

class Element(models.Model): 
    page = models.ForeignKey(Page)   
    post = models.ForeignKey(Post) 
    style = models.ForeignKey(Style) 

其實非M2M連接更有意義我的應用程序後,所有。

給自己的備忘錄:重新思考模型關係,然後嘗試智取Django :-(