web-dev-qa-db-fra.com

Remplacer un formulaire dans Django admin

Dans Django admin, je veux remplacer et implémenter mon propre formulaire pour un modèle (par exemple le modèle de facture).

Je souhaite que le formulaire de facture comporte des champs de saisie automatique pour le nom du client, le nom du produit et je souhaite également effectuer une validation personnalisée (comme la limite de crédit pour un client). Comment puis-je remplacer le formulaire par défaut fourni par Django admin et implémenter le mien?

Je suis nouveau à Django, j'apprécie tous les conseils.

34
18bytes

Vous pouvez remplacer les formulaires pour l'administrateur intégré de Django en définissant l'attribut formulaire de ModelAdmin sur votre propre classe de formulaire. Voir:

  1. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#Django.contrib.admin.ModelAdmin.form
  2. https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin

Il est également possible de remplacer le modèle de formulaire - consultez https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options

Si vous recherchez spécifiquement la saisie semi-automatique, je peux recommander https://github.com/crucialfelix/Django-ajax-selects

48
fest

Comment remplacer un formulaire dans l'administration Django selon les 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
22
dan-klasson