Profile
이후 링크, 그것은 관계에 종속 모델입니다. 따라서 사용자를 삭제하면 모든 종속 모델이 삭제됩니다. 그러나 프로필을 삭제하면 User
은 프로필에 종속되지 않으므로 제거되지 않습니다.
불행히도, on_delete
Django docs에 따르면, 부모 관계를 삭제하는 on_delete
규칙이 없습니다. 수행 할 때 다음
class Profile(models.Model):
# ...
def delete(self, *args, **kwargs):
self.user.delete()
return super(self.__class__, self).delete(*args, **kwargs)
: 그렇게하기 위해서는, 당신은 Profile
의 delete
방법을 덮어 쓸 수
Profile.objects.get(...).delete()
은 프로파일의 사용자를 삭제합니다. 그 이후 (장고 관리자 무엇이라고한다) 검색어 세트를 사용하여 프로파일을 삭제할 때 delete
메서드가 호출되지 않습니다하지만 장고는 SQL 대량의 개체를 삭제하려면 삭제를 사용합니다 :이 경우
Profile.objects.filter(...).delete()
, 장고 권장 docs이면 post_delete
신호 (docs)를 사용해야합니다.
from django.dispatch import receiver
from django.db.models.signals import post_delete
@receiver(post_delete, sender=Profile)
def post_delete_user(sender, instance, *args, **kwargs):
if instance.user: # just in case user is not specified
instance.user.delete()
대단히 감사합니다! 나는 Django에서 새로운 것이므로 다른 Django 놈들이 이것을 발견 할 경우 @receiver 데코레이터에 dispatch_uid를 추가하여 작동되도록해야한다. 그러나 그 후, 그것은 훌륭하게 작동했습니다! – Nick