The automatically generated django admin forms are already quite customisable already, but sometimes you need to add a new element or piece of information that just isn't part of the form or model.
That's where its easier to override the template a little.
Place the file in a template path in your project or app, in the following directory structure and filename:
"admin/your_app_label/your_model_name/change_form.html"
The model name should be in lower case.
Now in the template file:
 {% extends 'admin/change_form.html' %}
 
 {% block after_related_objects %}
 {{ block.super }}
 
 Oh harro!
 {% endblock after_related_objects %}   In your django installation folder, see "contrib\admin\templates\admin\change_form.html" for what block names you can override.
Another method would be to specify the template file in the model.
 class MyModelAdmin(admin.ModelAdmin):
   # A template for changing the model admin form
   change_form_template = "myapp/blah_change_form.html"   Just remember, do not override too much stuff. Stick to modifying small blocks and always remember to display {{ block.super }} in case anything changes in future revisions.
    
A simple example of what happens when you change too much.
[ Source ]

 
