2
我無法找到一個街道的方式來做到這一點。Django BooleanField作爲單選按鈕在Inlineadmin
我無法找到一個街道的方式來做到這一點。Django BooleanField作爲單選按鈕在Inlineadmin
我找不到一條街道來做到這一點,所以我使用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')
嘗試使用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中的布爾字段。
它沒有與我一起工作,它使場消失 –
恩,對不起,沒有機會測試它。您可能必須定義一個繼承自RadioSelect小部件的自定義小部件,但實現正確的邏輯來正確處理BooleanField。你可以從另一邊來解決這個問題,並將你的BooleanField改爲ChoiceField? –