I created UserProfile (extends from User) and written to settings.py
AUTH_PROFILE_MODULE = 'mainapp.UserProfile'.
When I delete UserProfile (from admin area) I would delete also User item.
I try delete user so self.user.delete(), but method delete (in UserProfile) don’t call. Why ?
This is my code:
class UserProfile(models.Model):
avatar = models.ImageField(upload_to = settings.PATH_AVATARS, blank=True)
url = models.URLField(blank=True)
user = models.OneToOneField(User)
def __unicode__(self):
return self.user.username
def delete(self, *args, **kwargs):
self.user.delete()
super(UserProfile, self).delete(*args, **kwargs)
First, to answer why “delete()” is not called from the admin. This statement is:
That said, _delete signals are well supported. Here is how you can use it:
This is how i tested it:
Of course, this also works when the delete() method of the object is called:
Note that because of cascade delete, this works both ways:
If you need to know more about signals, refer to Django’s extensive documentation.