【问题标题】:django atomic transactions with forign key model具有外键模型的 django 原子事务
【发布时间】:2020-06-23 07:30:39
【问题描述】:

models.py

class Model1(models.Model):
        title=models.Charfield(max_length=20,defulte='some string')


 class Model2(models.Model):
        key=models.Forignkey(Model1,on_delete=models.CASCADE)

script.py

    @atomic.transaction
    def my_fuc():
        obj1=Model1.objects.create(title='string for obj 1')
        obj2=Model2.objects.create(key_id=obj1.id)

如果其中一个失败,我现在需要使用 roleback 创建的 obj1 和 obj2。 我收到此错误消息: obj1 匹配查询不存在。

在一个对象提交失败的情况下,有什么想法可以通过回滚来运行这个函数?

【问题讨论】:

    标签: django-models transactions atomic rollback


    【解决方案1】:

    您可以关注这些资源 https://docs.djangoproject.com/en/3.0/topics/db/transactions/#django.db.transaction.atomic

    https://docs.djangoproject.com/en/2.2/topics/db/transactions/#django.db.transaction.get_rollback

    尝试将其作为上下文管理器

    with transaction.atomic():
       obj1=Model1.objects.create(title='string for obj 1')
       obj2=Model2.objects.create(key=obj1)
    
    return obj2 # any one as you need
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 2012-03-16
      • 2015-09-19
      • 1970-01-01
      • 2020-12-23
      • 2020-11-07
      • 2011-05-10
      • 1970-01-01
      相关资源
      最近更新 更多