gpt4 book ai didi

django - 在 Django 中,如何防止 "Save with update_fields did not affect any rows."错误?

转载 作者:行者123 更新时间:2023-12-02 04:46:10 25 4
gpt4 key购买 nike

我正在使用 Django 和 Python 3.7。我有这个代码

article = get_article(id)
...
article.label = label
article.save(update_fields=["label"])

有时我在“保存”行上收到以下错误...

    raise DatabaseError("Save with update_fields did not affect any rows.")
django.db.utils.DatabaseError: Save with update_fields did not affect any rows.

显然,在“...”中,另一个线程可能正在删除我的文章。是否有另一种方法可以重写我的“article.save(...)”语句,以便如果该对象不再存在,我可以忽略抛出的任何错误?

最佳答案

一个comment gachdavit 建议使用 select_for_update 。您可以修改 get_article 函数以在获取文章之前调用 select_for_update。通过这样做,只要当前事务不提交或回滚,保存该文章的数据库行就会被锁定。如果另一个线程尝试同时删除该文章,该线程将阻塞,直到锁被释放。实际上,只有在您调用 save 函数之后,该文章才会被删除。

除非您有特殊要求,否则我会采取这种方法。

关于django - 在 Django 中,如何防止 "Save with update_fields did not affect any rows."错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56259032/

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