gpt4 book ai didi

python - 我应该如何以及在哪里创建此事务方法?

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:39 24 4
gpt4 key购买 nike

我正在使用Python 3.7。在服务类中,我有这些语句......

article.first_appeared_date = datetime.now(timezone.utc)
article.save()

ArticleStat.objects.save_main_article(article)

第一对语句更新单个对象的属性,第二条语句使用第一个对象创建一堆单独的对象。我希望整个事情作为一个事务执行,这样一切都会成功,或者如果出现问题,数据库不会发生任何更改。我不清楚 Python 的最佳实践。这样的方法会去哪里呢?将其放入管理器类中是否可以使其具有事务性?

最佳答案

from django.db import transaction

with transaction.atomic():
article.first_appeared_date = datetime.now(timezone.utc)
article.save()

ArticleStat.objects.save_main_article(article)

您可以在某些模型中甚至在从服务调用的 View 中实现此方法。大多数时候,您希望将这样的代码放入某个 View (或在 View 中调用的函数)中。

但是,如果您想要的是每次保存文章时执行ArticleStat.objects.save_main_article(article),您应该查看 Django signals ,具体来说post_save信号。

在此处查看交易文档:https://docs.djangoproject.com/en/2.1/topics/db/transactions/

关于python - 我应该如何以及在哪里创建此事务方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281215/

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