Как я могу использовать разные виджеты форм в админке Django? - PullRequest
3 голосов
/ 15 июня 2011

Я пробовал что-то вроде:

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 голос
/ 22 июля 2011

Вместо переопределения виджетов в классе 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. Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...