简体   繁体   English

在django中删除外键时删除模型

[英]deleting model when foreignkey is deleted in django

So, I have a model something like this所以,我有一个像这样的模型

class Blog(models.Model):
      id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
      posted_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True)

      def delete(self, *args, **kwargs):
            # to do before delete
            super().delete(*args, **kwargs)

I want to delete all Blog objects related to User when the User is deleted.当用户被删除时,我想删除与用户相关的所有博客对象。 It is working but its deleting object without calling overridden delete function.它正在工作,但它的删除对象没有调用覆盖的删除函数。 I want to delete the model through the overridden delete function coz i have something to do before actually deleting the object.我想通过覆盖的删除函数删除模型,因为在实际删除对象之前我有一些事情要做。 If it is not possible, do suggest any other way to do it.如果不可能,请建议任何其他方法来做到这一点。

It should still be possible with pre_delete signal:使用pre_delete信号应该仍然可以:

@receiver(pre_delete, sender=Blog)
def my_pre_delete_process_for_blog(sender, instance, **kwargs):
    ...

From the docs :文档

Note that the delete() method for an object is not necessarily called when deleting objects in bulk using a QuerySet or as a result of a cascading delete.请注意,当使用 QuerySet 批量删除对象或作为级联删除的结果时,不一定会调用对象的 delete() 方法。 To ensure customized delete logic gets executed, you can use pre_delete and/or post_delete signals.为确保执行自定义删除逻辑,您可以使用 pre_delete 和/或 post_delete 信号。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM