﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
13220	Documentation on pre- and post-save/delete hooks misses key arguments	nikoftime	nobody	"The documentation at http://www.djangoproject.com/documentation/models/save_delete_hooks/

Has the following code example:
{{{
from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)

    def __unicode__(self):
        return u""%s %s"" % (self.first_name, self.last_name)

    def save(self):
        print ""Before save""
        super(Person, self).save() # Call the ""real"" save() method
        print ""After save""

    def delete(self):
        print ""Before deletion""
        super(Person, self).delete() # Call the ""real"" delete() method
        print ""After deletion""
}}}

However, using method definitions like these to override models.Model.save() and .delete() causes some problems with the optional arguments to both functions.  
A better way to do this might be to have the method signatures use *args, and **kwargs, so that arguments to these overridden methods are properly passed to the parent method implementations:

{{{
from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)

    def __unicode__(self):
        return u""%s %s"" % (self.first_name, self.last_name)

    def save(self, *args, **kwargs):
        print ""Before save""
        super(Person, self).save(*args, **kwargs) # Call the ""real"" save() method
        print ""After save""

    def delete(self, *args, **kwargs):
        print ""Before deletion""
        super(Person, self).delete(*args, **kwargs) # Call the ""real"" delete() method
        print ""After deletion""
}}}

This also helps future-proof overridden method implementations to changes in the Django core."		closed	Documentation	1.2-beta		invalid	pre save, post save, hook, delete hook, save hook		Unreviewed	0	0	0	0	0	0
