gpt4 book ai didi

Django 删除而不调用信号

转载 作者:行者123 更新时间:2023-12-04 00:38:18 24 4
gpt4 key购买 nike

我将信号用于当对象被删除、保存、更新等时应该始终完成的事情。但是,有时我不想调用我的保存信号,所以我使用

Model.objects.filter(id=instance.id).update(field=value)

代替实例的保存方法:

instance.save()

在删除对象的情况下,也有我不想调用删除信号的时候,但是我还没有找到避免调用它们的方法。有办法吗??

更新:

我正在使用 django 1.6.2 并像这样调用删除方法:

Model.objects.filter(id=instance.id).delete()

在查询集上仍然调用删除信号。

最佳答案

存在不安全未记录的方式,可能会在版本之间发生变化,并且可能导致难以调试的意外后果

这是一个您可能不想使用的 hack,但是......这是可能的。

qs = Model.objects.filter(id=instance.id)
qs.order_by().select_related(None)._raw_delete(qs.db)

如果你有任何与此相关的对象,它可能会因数据库错误而失败,因为 Django 不会自动删除记录

关于Django 删除而不调用信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22329846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com