Override a form in Django admin

18bytes picture 18bytes · Apr 6, 2012 · Viewed 83.7k times · Source

In Django admin I want to override and implement my own form for a model (e.g. Invoice model).

I want the invoice form to have auto-fill fields for customer name, product name and I also want to do custom validation (such as credit limit for a customer). How can I override the default form provided by Django admin and implement my own?

I am new to Django, I appreciate any pointers.

Answer

fest picture fest · Apr 6, 2012

You can override forms for django's built-in admin by setting form attribute of ModelAdmin to your own form class. See:

  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

It's also possible to override form template - have a look at https://docs.djangoproject.com/en/dev/ref/contrib/admin/#custom-template-options

If you're looking specifically for autocomplete I can recommend https://github.com/crucialfelix/django-ajax-selects