【问题标题】:How to insert data in to multiple table using django orm如何使用 django orm 将数据插入到多个表中
【发布时间】:2020-03-24 01:09:43
【问题描述】:

我已经创建了 2 个表,即 table1 和 table2 我想使用 django ORM 将数据插入到两个表中,我该如何实现它

models.py

class Table1(models.Model):
    name = models.CharField(max_length=20,null=True)

class Table2(models.Model):
    name = models.CharField(max_length=20,null=True)

views.py

class Test(ListAPIView):
    def get(self,request):
        obj1 = Table1(name="jasir")
        obj2 = Table2(name="shibin")

        obj1.save()
        obj2.save()

        return Response(True)

我像这样保存但我想使用单个 save() 实例保存它有没有可能 我找到的等效 sql 查询是

BEGIN TRANSACTION
   INSERT INTO Table1 (name) VALUES ('jasir')
   INSERT INTO Table2 (name) VALUES ('shibin')
COMMIT TRANSACTION

如何用 django ORM 做同样的事情

【问题讨论】:

    标签: python django django-rest-framework django-orm


    【解决方案1】:

    尝试像这样使保存原子化:

    with django.db.transaction.atomic():
        obj1.save()
        obj2.save()
    

    【讨论】:

      【解决方案2】:

      你可以使用 Django 的 transcation.atomic context-manager 来做到这一点

      参考: https://docs.djangoproject.com/en/2.2/topics/db/transactions/#django.db.transaction.atomic

      with transaction.atomic():
              # This code executes inside a transaction.
              obj1 = Table1(name="jasir")
              obj2 = Table2(name="shibin")
      
              obj1.save()
              obj2.save()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-06
        • 2017-02-19
        • 1970-01-01
        • 1970-01-01
        • 2017-08-28
        • 2017-02-17
        • 2014-03-26
        • 2020-05-26
        相关资源
        最近更新 更多