Xin*_*han 9 django django-models django-users
我正在写一个django项目.并且想知道用户删除自己的帐户后,有没有办法django内置自动删除与该用户相关的所有对象(例如一些通用的foreign_key)?或者我应该使用信号"post_delete"来删除每个相关的对象?
Pri*_*shj 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()
Run Code Online (Sandbox Code Playgroud)
Django建议不要删除用户,因为外键会中断.出于这个原因,它们包含了is_active方法.
请参阅https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.models.User.is_active
在删除原始对象之前,应该显式删除对原始对象的所有通用外键引用.例如
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()
Run Code Online (Sandbox Code Playgroud)
级联删除很有用,例如,对于模型中的一对一关系,但它似乎不适用于通用外键关系.
| 归档时间: |
|
| 查看次数: |
11717 次 |
| 最近记录: |