2010-10-06 42 views
3

我希望這沒有被問及,我只是錯過了,但我搜查了一堆,找不到任何東西。在django中添加一個額外的按鈕到一個對象admin

添加或更改對象時,我正在爲django管理員添加一個額外的保存按鈕。這樣做相當簡單。我只是覆蓋submit_line.html以添加額外按鈕,然後重寫save_model函數以檢查該按鈕的名稱。它效果很好。

我的問題是,我只需要這個按鈕出現一個特定的對象......不是所有的人。我查看了change_form.html,看看它是如何知道它正在處理的對象,並找到{{opts.module_name}},但它似乎無法在submit_line.html中訪問。我試圖把它打印出來,什麼都沒有顯示出來。

我也想過關於hack save_as(不是很優雅,但我並不真正關心這個特定的項目),但是這個按鈕只顯示在變化上..不是添加,所以這是行不通的。

有誰知道如何檢測我在submit_line.html中使用的對象嗎?或者以其他方式做到這一點?

謝謝!

回答

4

您可以使用JavaScript這樣做:

/static/js/useful.js

 
$(document).ready(function ($) { 
    $('input[name="_addanother"]').before('<input type="submit" name="_use" value="Useful functionality"/>'); 
}); 

,並在您的ModelAdmin加:

 
class MyModelAdmin(admin.ModelAdmin): 
    class Media: 
     js = ('/static/js/useful.js',) 
+2

不錯,但誰使用此,由於https://code.djangoproject.com/ticket/12882人,這是不行的,所以我覺得一個快​​速的解決辦法是用django.jQuery更換$ – Paulo 2011-09-10 05:54:34

+3

感謝信息Paulo。我實現這樣的: '(函數($){ $(文件)。就緒(函數($){ $( '輸入[名稱= 「_ addanother」]')之前(''); }); })(django.jQuery);' – Pikaling 2012-01-22 01:25:33

0

您應該能夠通過original訪問change_view的背景下,原來的對象。例如{{ original.id }}應該打印它的ID!

+0

我需要做什麼讓這個工作?我在提交按鈕之前放置了{{original.id}},沒有任何內容顯示出來。 (我在它後面添加一些純文本以確保更改顯示。) – lovefaithswing 2010-10-06 16:45:05

+0

對不起,只是看到提交行是通過模板標記呈現的,因此您無法在那裏訪問原始文件。你會NEET使自己的模板標籤來傳遞你的願望模板參數見http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/templatetags/admin_modify.py#L22爲原來的一個! – 2010-10-07 12:02:23

相關問題