Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added the missing form option to the ModelAdmin options section. Also…

… added a section for custom validation in the admin.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@8208 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit ac6952089061e3e160cd6ae4487840593ac95575 1 parent bf65fd0
@brosner brosner authored
Showing with 32 additions and 0 deletions.
  1. +32 −0 docs/admin.txt
View
32 docs/admin.txt
@@ -69,6 +69,13 @@ Example::
date_hierarchy = 'pub_date'
+``form``
+~~~~~~~~
+
+The default ``forms.ModelForm`` class used to generate the form on the
+add/change pages for models. You can easily change this to your own
+``ModelForm`` to override the default form behavior of the add/change pages.
+
``fieldsets``
~~~~~~~~~~~~~
@@ -528,6 +535,31 @@ apply as `regular media definitions on forms`_.
.. _regular media definitions on forms: ../forms/#media
+Adding custom validation to the admin
+-------------------------------------
+
+Adding custom validation of data in the admin is quite easy. The automatic
+admin interfaces reuses the Django `forms`_ module. The ``ModelAdmin`` class
+gives you the ability define your own form::
+
+ class ArticleAdmin(admin.ModelAdmin):
+ form = MyArticleAdminForm
+
+``MyArticleAdminForm`` can be defined anywhere as long as you import where
+needed. Now within your form you can add your own custom validation for
+any field::
+
+ class MyArticleAdminForm(forms.ModelForm):
+ def clean_name(self):
+ # do something that validates your data
+ return self.cleaned_data["name"]
+
+It is important you use a ``ModelForm`` here otherwise things can break. See
+the `forms`_ documentation on `custom validation`_ for more information.
+
+.. _forms: ../forms/
+.. _custom validation: ../forms/#custom-form-and-field-validation
+
``InlineModelAdmin`` objects
============================
Please sign in to comment.
Something went wrong with that request. Please try again.