Django在删除具有相同模型的子对象的对象时发出post_delete信号

Django在删除具有相同模型的子对象的对象时发出post_delete信号,django,django-signals,Django,Django Signals,当post_delete信号用于向用户发送有关注释删除的通知警报时,仅当存在与其相关联的回复时,才会发生以下错误。如果评论没有回复,那么效果很好 Comment models.py部分代码 user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, default=None) parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True,

当post_delete信号用于向用户发送有关注释删除的通知警报时,仅当存在与其相关联的回复时,才会发生以下错误。如果评论没有回复,那么效果很好

Comment models.py部分代码

user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, default=None)
parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
content = models.TextField()
def CommentDelete_handler(sender, instance, **kwargs):
    print(instance)
post_delete.connect(CommentDelete_handler, sender=Comment)
因此,没有父级的注释是主注释,有父级的注释是回复

signals.py部分代码

user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, default=None)
parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
content = models.TextField()
def CommentDelete_handler(sender, instance, **kwargs):
    print(instance)
post_delete.connect(CommentDelete_handler, sender=Comment)
在这里,仅访问实例将生成一个错误

注释匹配查询不存在

我不清楚这个过程中的工作机制,也不清楚为什么它只处理一条评论,但当它内部有回复时会产生错误

注意:我使用pre_delete信号而不是post信号修复了这种情况,这两种情况下都可以正常工作。如果有人建议工作机制以及为什么post_信号在这方面失败,或者我可以做任何更新,使其在post_信号中工作。谢谢你的支持