如何使用 django orm 将数据插入多个 table
How to insert data in to multiple table using django orm
我已经创建了 2 table,即 table1 和 table2 我想使用 django ORM 将数据插入到两个 tables 中,我怎么能实现它
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 做同样的事情
您可以使用 Django 的 transcation.atomic
上下文管理器来做到这一点
参考:
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()
尝试像这样使保存原子化:
with django.db.transaction.atomic():
obj1.save()
obj2.save()
我已经创建了 2 table,即 table1 和 table2 我想使用 django ORM 将数据插入到两个 tables 中,我怎么能实现它
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 做同样的事情
您可以使用 Django 的 transcation.atomic
上下文管理器来做到这一点
参考: 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()
尝试像这样使保存原子化:
with django.db.transaction.atomic():
obj1.save()
obj2.save()