2012-09-24 106 views

回答

1

我找不到一條街道來做到這一點,所以我使用JavaScript做了調整。

$(document).ready(function() { 
    $(".field-current").live("click",function(){ 

    $action = $($(this).children()[0]) 
    current_state = $action.is(':checked'); 
    $('.field-current').each(function(index) { 
     var $temp = $($(this).children()[0]) 
     $temp.val(false); 
     $temp.attr('checked', false); 
    }); 

    var $current = $($(this).children()[0]) 
    if (current_state == "on" || current_state == true){ 
     $current.val(true); 
     $current.attr('checked', true); 
    }else{ 
     $current.val(false); 
     $current.attr('checked', false); 
    } 
    }); 
}); 
在管理頁面

做這個當前字段將inlineadmin中像單選按鈕添加

class ArticleDetailsInlineAdmin(admin.TabularInline): 
    .... 
    fields  = ['current', 'slug','summary','mod_date'] 

class ArticleHeaderAdmin(admin.ModelAdmin): 
    inlines = [ArticleDetailsInlineAdmin,] 
    ...... 
    form = ArticleForm 

class Media: 
     js = ('js/admin-current-article.js') 

1

嘗試使用formfield_overrides屬性來更改使用的微件(它的可用在InlineAdmin類以及ModelAdmin上):

from django.forms.widgets import RadioSelect 

class ArticleDetailsInlineAdmin(admin.TabularInline): 
    ... 
    fields = ['current', 'slug', 'summary', 'mod_date'] 
    formfield_overrides = { 
      models.BooleanField: {'widget': RadioSelect}, 
     } 

請注意,這將使用單選按鈕代替的所有 ArticleDetailsInlineAdmin中的布爾字段。

+1

它沒有與我一起工作,它使場消失 –

+0

恩,對不起,沒有機會測試它。您可能必須定義一個繼承自RadioSelect小部件的自定義小部件,但實現正確的邏輯來正確處理BooleanField。你可以從另一邊來解決這個問題,並將你的BooleanField改爲ChoiceField? –