2011-07-05 17 views
10

Quiero que el administrador de Django use un campo de formulario personalizado para la entrada de algunos campos.¿Cómo usar campos de formulario personalizados para campos de modelo en el administrador de Django?

Hasta ahora hice un campo de modelo personalizado que tiene el campo de formulario vinculado a él que funciona muy bien pero introduce un campo de modelo innecesario que no agrega ningún beneficio.

Supongo que se puede hacer de alguna manera con un formulario de administrador personalizado (ver http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin) pero no pude encontrar la manera de hacerlo.

+0

¿Qué no entiendes acerca de ese ejemplo vinculado? Parece perfectamente claro: defina su formulario con el campo personalizado y configúrelo como el formulario para la clase de administrador. ¿Cuál es el problema? –

Respuesta

8
class MyModelForm(forms.ModelForm): 
    my_field = MyCustomFormField() 

    class Meta: 
     model = MyModel 

class MyModelAdmin(admin.ModelAdmin): 
    form = MyModelForm 
+0

Gracias! Eso funcionó como un encanto. No sabía que solo puedes sobrescribir los campos de formulario. – Semmel

+0

En realidad, este método ** no funciona ** - solo en 'Form's normales. Si uno quiere sobrescribir campos en un 'Modelo_Formulario', esto tiene que hacerse en la clase Meta. Consulte https://docs.djangoproject.com/en/1.5/topics/forms/modelforms/#overriding-the-default-fields – jnns

+0

@jnns: raro, la parte de ModelForm se toma casi textualmente de la página de Django doc que ha vinculado . – che

Cuestiones relacionadas