2011-06-15 89 views
3

我试过的东西,如:如何在Django admin中使用不同的表单小部件?

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

而是在Meta类中重写小部件,只需设置小部件的__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中适用。希望能帮助你。

相关问题