我尝试着用如下代码:
class PedidoForm(forms.ModelForm):
class Meta:
model = Pedido
widgets = {
'nota': forms.Textarea(attrs={'cols': 80, 'rows': 20}),
}
但它在列表视图和单对象视图中都会发生变化。我想仅更改单个对象视图中的int值。我该如何做?
我想要这个:
但不要这个:
不要在元类中重写小部件,而是在__init__
的重写中设置小部件,并在您的管理类中指定表单。您指定的表单仅用于添加/更改视图。例如:
#forms.py
from django import forms
class PedidoAdminForm(forms.ModelForm):
class Meta:
model = Pedido
def __init__(self, *args, **kwargs):
super(PedidoAdminForm, self).__init__(*args, **kwargs)
self.fields['nota'].widget = forms.Textarea()
#admin.py
from django.contrib import admin
from your_app.forms import PedidoAdminForm
from your_app.models import Pedido
class PedidoAdmin(admin.ModelAdmin):
form = PedidoAdminForm
list_editable = ['nota']
这在Django 1.3中对我有效。希望能帮到你。