【问题标题】:How can I use different form widgets in Django admin?如何在 Django admin 中使用不同的表单小部件?
【发布时间】:2011-09-15 14:08:51
【问题描述】:

我尝试过类似的东西:

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

但它在列表视图和单个对象视图中都发生了变化。我只想为单个对象视图更改 int 。我该怎么做?

我想要这个:

但不是这个:

【问题讨论】:

    标签: django forms widget


    【解决方案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 中适用于我。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-08-19
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2013-04-03
      • 2011-03-29
      • 1970-01-01
      • 2013-09-15
      相关资源
      最近更新 更多