django的CharField在admin后台的默認展示方式時input的形式,有時我們需要修改成textarea用來優化輸入。
我們可以在admin.py中做處理,以下例子:
第一種方式我們定義一下fromfield_overrides
from django.contrib import admin class SchoolAdmin(admin.ModelAdmin): formfield_overrides = {models.CharField: {'widget': forms.Textarea},} admin.site.register(School, SchoolAdmin)
這樣之后,school的編輯頁面的所有charfield的編輯方式都將變為textarea的形式,但我們也許需要指定特定的字段修改type
第二種 重寫formfield_for_dbfield方法
class SchoolAdmin(admin.ModelAdmin): # formfield_overrides = {models.CharField: {'widget': forms.Textarea},} def formfield_for_dbfield(self, db_field, **kwargs): formfield = super(SchoolAdmin, self).formfield_for_dbfield(db_field, **kwargs) if db_field.name in ['intro', 'base_info']: formfield.widget = forms.Textarea(attrs=formfield.widget.attrs) return formfield admin.site.register(School, SchoolAdmin)
做一個fieldname的判斷處理,這樣就可以指定字段為指定類型
django修改admin下編輯的控件形式
原