2010-10-30 74 views
0

我有點困惑,爲什麼這種功能不是在管理員默認的,但也許有人可以給我一些如何去解決這個問題的暗示。django管理內聯(和嵌套內聯):如何獲得此功能?

我有一個項目應用程序,跟蹤項目,並將通過管理編輯。每個項目都有許多與ForeignKey相關的模型(鏈接,頁面,視頻,圖片等),可以在項目管理中作爲內聯放置。

(一個或兩個型號有嵌套內聯,這樣他們就不會在管理(thisthis票處理這個)顯示)

的能夠對項目管理在線編輯這些模型代替(這會變得混亂和難以使用),我會喜歡該相關模型的所有當前實例的列表,以及每個模型的簡單添加/編輯按鈕,這些按鈕將以該模型的形式打開一個彈出窗口。

Project Admin: 
    - Normal Fields 

    - Links: 
     -Link 1 (edit) 
     -Link 2 (edit) 
     + add link <- popup 


    - Images: 
     -Image 1 (edit) 
     -Image 2 (edit) 
     + add image <- popup 

等。我會怎麼寫這個?我只需要爲管理面板的一個部分/模型做這件事,所以我不認爲編寫我自己的Crud後端是必要的。

感謝

回答

0

我實現了這樣的事情在一個應用程序一次,但由於Django的管理犯規支持嵌套內聯(我指的是內聯內內聯),我也跟着稍微不同的方法。用例是你有一個發票(有幾個內聯屬性),你有reciepts(再次帶內聯屬性)。收款人對發票模型有一個外鍵(基本上收款是發票的一部分)。

我通過在發票列表視圖中添加一個字段來實現它,該列表視圖鏈接到已過濾的收件人列表視圖。

所以在發票管理,就不會有:

def admin_view_receipts(self, object): 
    url = urlresolvers.reverse('admin:invoice_%s_changelist'%'receipt') 
    params = urllib.urlencode({'invoice__id__exact': object.id}) 
    return '<a href="%s?%s">Receipts</a>' % (url, params) 
admin_view_receipts.allow_tags = True 
admin_view_receipts.short_description = 'Receipts' 

這給你,把你帶到另一個列表視圖列表視圖中的鏈接,而是通過外鍵過濾。現在,您可以爲這兩種模型提供內聯,並輕鬆訪問相關模型。

+0

我不太明白這一點。這是否將收據清單添加到所有發票的更改清單或發票的實際管理頁面?我只是想要在發票管理中列出所有相關收據的列表以及將您帶到收據管理頁面的鏈接(將正確的發票作爲外鍵選中) – 2010-11-09 21:14:43

+0

由於問了這個問題:這是我經常採用的方法,其中一個最可實施的 – 2012-01-21 08:48:35

+0

剛剛看到您先前的評論。我假設你已經知道了:) – zsquare 2012-01-21 18:39:26