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.

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


It’s also possible to override form template – have a look at

If you’re looking specifically for autocomplete I can recommend

How to override a form in the django admin according to the 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