我有过
class Cab(models.Model):
name = models.CharField( max_length=20 )
descr = models.CharField( max_length=2000 )
class Cab_Admin(admin.ModelAdmin):
ordering = ('name',)
list_display = ('name','descr', )
# what to write here to make descr using TextArea?
admin.site.register( Cab, Cab_Admin )
如何在管理界面中将TextArea小工具分配给'descr‘字段?
更新:
仅在管理界面中!
使用ModelForm是个好主意。
发布于 2009-01-10 05:57:06
您必须创建一个forms.ModelForm
来描述您希望如何显示descr
字段,然后告诉admin.ModelAdmin
使用该表单。例如:
from django import forms
class CabModelForm( forms.ModelForm ):
descr = forms.CharField( widget=forms.Textarea )
class Meta:
model = Cab
class Cab_Admin( admin.ModelAdmin ):
form = CabModelForm
admin.ModelAdmin
的form
属性记录在官方的Django文档中。这是one place to look at。
发布于 2009-01-10 17:46:51
对于这种情况,最好的选择可能就是在模型中使用TextField而不是CharField。您还可以覆盖ModelAdmin
类的formfield_for_dbfield
方法:
class CabAdmin(admin.ModelAdmin):
def formfield_for_dbfield(self, db_field, **kwargs):
formfield = super(CabAdmin, self).formfield_for_dbfield(db_field, **kwargs)
if db_field.name == 'descr':
formfield.widget = forms.Textarea(attrs=formfield.widget.attrs)
return formfield
发布于 2011-06-06 04:00:41
Ayaz有很大的优势,除了一个小的变化(?!):
class MessageAdminForm(forms.ModelForm):
class Meta:
model = Message
widgets = {
'text': forms.Textarea(attrs={'cols': 80, 'rows': 20}),
}
class MessageAdmin(admin.ModelAdmin):
form = MessageAdminForm
admin.site.register(Message, MessageAdmin)
因此,您不需要在ModelForm中重新定义字段来更改其窗口小部件,只需在元数据中设置窗口小部件字典即可。
https://stackoverflow.com/questions/430592
复制相似问题