我该如何在Django管理后台中使用不同的表单小部件?

3

我尝试着用如下代码:

class PedidoForm(forms.ModelForm):
    class Meta:
        model = Pedido
        widgets = {
            'nota': forms.Textarea(attrs={'cols': 80, 'rows': 20}),
        }

但它在列表视图和单对象视图中都会发生变化。我想仅更改单个对象视图中的int值。我该如何做?

我想要这个:

enter image description here

但不要这个:

enter image description here

1个回答

1

不要在元类中重写小部件,而是在__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中对我有效。希望能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接