2012-04-06 18 views
24

En Django admin, quiero anular e implementar mi propio formulario para un modelo (por ejemplo, modelo de factura).Anular un formulario en Django admin

Quiero que el formulario de factura tenga campos de autocompletar para el nombre del cliente, el nombre del producto y también quiero hacer una validación personalizada (como el límite de crédito para un cliente). ¿Cómo puedo anular el formulario predeterminado proporcionado por el administrador de Django e implementar el mío propio?

Soy nuevo en Django, agradezco cualquier información.

Respuesta

38

Puede anular formularios para el administrador integrado de django configurando el atributo de formulario de ModelAdmin en su propia clase de formulario. Ver https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form y https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

También es posible anular la forma en plantillas echar un vistazo a https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options

Si está buscando específicamente para autocompletar puedo recomendar https://github.com/crucialfelix/django-ajax-selects

+0

¿Es posible anular la apariencia del formulario? Con función de autocompletar para los campos seleccionados. – 18bytes

+1

Es seguro que actualizo mi respuesta. – fest

+0

Si está buscando administración automática completa, no usé django-ajax-selects, pero [django-autocomplete-light] (http://django-autocomplete-light.readthedocs.io/en/master/) es definitivamente vale la pena :) – GabLeRoux

14

Cómo reemplazar un formulario en la administración de Django de acuerdo con docs:

from django import forms 
from django.contrib import admin 
from myapp.models import Person 

class PersonForm(forms.ModelForm): 

    class Meta: 
     model = Person 
     exclude = ['name'] 

class PersonAdmin(admin.ModelAdmin): 
    exclude = ['age'] 
    form = PersonForm 
+0

Pongo este código en models.py o admin.py. ¿A dónde va la aplicación de Person? ¿Esto se refiere a una aplicación que creé? –

+0

@KehlinSwain: Persona es el modelo. Este código puede vivir en admin.py, o en un form.py externo que importe desde admin.py. –