Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django how to delete user's profile and posts and all assocation after user deleted?

I'm writing a django project. And want to know after user deletes his own account, is there a way django build-in to auto delete all object related to this user(e.g. some generic foreign_key)? Or I should use signal "post_delete" to delete every objects related?

like image 762
Xinghan Avatar asked Jan 25 '12 22:01

Xinghan


2 Answers

When Django deletes an object, by default it emulates the behavior of the SQL constraint ON DELETE CASCADE -- in other words, any objects which had foreign keys pointing at the object to be deleted will be deleted along with it.

https://docs.djangoproject.com/en/dev/topics/db/queries/#deleting-objects

b = Blog.objects.get(pk=1)
# This will delete the Blog and all of its Entry objects.
b.delete()
like image 133
Priyeshj Avatar answered Sep 27 '22 16:09

Priyeshj


Django recommends not deleting users since foreign keys will break. It's for this reason that they included the is_active method.

See https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.models.User.is_active

like image 31
jdickson Avatar answered Sep 27 '22 17:09

jdickson