2010-11-19 7 views
0

Django Adminのm2mウィジェットがどのように表示されるかをカスタマイズする必要がありますが、どこから起動するのが難しいですか。私はdjango.formsdjango.contrib.admin.wigetsからウィジェットのいくつかをサブクラス化しようとしましたが、何も動作していないようです。Django admin Many2Manyウィジェットのカスタマイズ

私が探しているものはhttp://i.stack.imgur.com/81AY3.pngです。

助けてください。

答えて

0

JavaScriptだけで実現できるもののようです。 Django管理者に独自のJavaScriptを追加するには、ModelAdmin media definitionsのドキュメントを参照してください。

0

これは私が思いついたものです。それは仕事のほとんどを行います。ただし、新しい項目が追加されたときにリストが更新されず、項目を変更しても元のページにリダイレクトされません。

/your_app/forms.py

class ProductForm(forms.ModelForm): 
    class Media: 
     js = ('js/custom_m2m.js',) 

    class Meta: 
     model = Product 

/your_media/js/custom_m2m.js

django.jQuery(function() { 
    var $ = django.jQuery; 

    // Add a new place holder div to hold the m2m list 
    $('div.options div').append('<div class="newdiv"></div>'); 

    // Assign some variables 
    var target = "options"; // <-- Target Field 
    var newdiv = $('div.newdiv'); 
    var next_page = window.location.pathname; 
    var add_link = $('div.'+target+' div a#add_id_'+target); 
    var edit_img = "/static/media_admin/img/admin/icon_changelink.gif"; 
    var add_img = "/static/media_admin/img/admin/icon_addlink.gif"; 

    // Make the placeholder div bit nicer 
    newdiv.attr("style", "line-height:20px; margin-left:105px;"); 

    // Iterate through select options and append them to 'newdiv' 
    $('select#id_'+target+' option[selected="selected"]').each(function() { 
     newdiv.append('<a href="/admin/shop/option/'+$(this).val()+'/?next='+next_page+'">'+$(this).text()+' <img src="'+edit_img+'" /></a><br />'); 
    }); 

    // Add a 'Add new' link after the option list 
    add_link.html('<strong>Add new</strong> ' + add_link.html()); 
    add_link.appendTo(newdiv); 

    // Show the 'newdiv' and hide the original dropdown 
    $('select#id_'+target).after(newdiv); 
    $('select#id_'+target).css("display", "none"); 
    $('div.'+target+' p[class="help"]').css("display", "none"); 
}); 

あなたが見ることができるように、上記のスクリプトは、いくつかのハードコードパスを使用しています。改善があれば助かります。

関連する問題