私はdjangoプロジェクトを書いています。ユーザーが自分のアカウントを削除した後に知りたいのですが、このユーザーに関連するすべてのオブジェクト(たとえば、いくつかの一般的なforeign_key)を自動削除するdjango組み込みの方法はありますか? または、信号「post_delete」を使用して、関連するすべてのオブジェクトを削除する必要がありますか?
12833 次
3 に答える
13
Django がオブジェクトを削除するとき、デフォルトでは、SQL 制約 ON DELETE CASCADE の動作をエミュレートします。つまり、削除するオブジェクトを指す外部キーを持つオブジェクトはすべて削除されます。
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()
于 2012-01-25T23:01:29.243 に答える
7
外部キーが壊れるので、Djangoはユーザーを削除しないことをお勧めします。is_activeメソッドが含まれているのはこのためです。
https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.models.User.is_activeを参照してください
于 2012-01-25T23:16:23.250 に答える
5
元のオブジェクトを削除する前に、元のオブジェクトへの汎用外部キー参照をすべて明示的に削除する必要があります。例えば
Image.objects.filter( object_id=object_to_be_deleted.id,content_type = ContentType.objects.get_for_model(bject_to_be_deleted.get_profile() )).delete()
object_to_be_deleted.delete()
カスケード削除は、たとえばモデル内の 1 対 1 の関係では機能する場合に優れていますが、一般的な外部キーの関係では機能しないようです。
于 2012-01-25T23:03:00.973 に答える