Commit 0fc2a2c1 authored by Adrian Holovaty's avatar Adrian Holovaty
Browse files

Added 'Overriding default model methods' section to model-api.txt

git-svn-id: http://code.djangoproject.com/svn/django/trunk@2955 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent be57a7fd
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -1599,6 +1599,39 @@ API. See `Other lookup options`_.
.. _Python DB-API: http://www.python.org/peps/pep-0249.html
.. _Other lookup options: http://www.djangoproject.com/documentation/db_api/#extra-params-select-where-tables

Overriding default model methods
--------------------------------

As explained in the `database API docs`_, each model gets a few methods
automatically -- most notably, ``save()`` and ``delete()``. You can override
these methods to alter behavior.

A classic use-case for overriding the built-in methods is if you want something
to happen whenever you save an object. For example::

    class Blog(models.Model):
        name = models.CharField(maxlength=100)
        tagline = models.TextField()

    def save(self):
        do_something()
        super(Blog, self).save() # Call the "real" save() method.
        do_something_else()

You can also prevent saving::

    class Blog(models.Model):
        name = models.CharField(maxlength=100)
        tagline = models.TextField()

    def save(self):
        if self.name == "Yoko Ono's blog":
            return # Yoko shall never have her own blog!
        else:
            super(Blog, self).save() # Call the "real" save() method.

.. _database API docs: http://www.djangoproject.com/documentation/db_api/

Models across files
===================

+1 −1

File changed.

Contains only whitespace changes.