Ben*_* RR 10 python django rest django-models django-rest-framework
我希望使用 Django REST 框架来“一起”创建许多模型对象——即在单个事务中。
目标是每个对象仅在事务(成功)结束时才可见。
我怎样才能做到这一点?
使用atomic
fromdjango.db.transaction
作为围绕执行您所追求的数据库操作的函数的装饰器:
如果obj_list
包含已填充(但未保存)的模型对象列表,这将作为一个事务的一部分执行所有操作。
@atomic
def save_multiple_objects(obj_list):
for o in obj_list:
o.save()
如果您想将多个对象保存为同一个 API 请求的一部分,那么(例如)如果它们都是相同的类型,那么您可以将对象列表发布到 API 端点 - 请参阅Django REST framework post array of对象
您可以使用django db transactions
. 参考下面的代码
from django.db import transaction
with transaction.atomic():
model_instance = form.save(commit=False)
model_instance.creator = self.request.user
model_instance.img_field.field.upload_to = 'directory/'+model_instance.name+'/logo'
self.object = form.save()
Run Code Online (Sandbox Code Playgroud)
这个例子取自我自己对这个SO post的回答。这边走,before calling save() you can save/edit other dependencies
归档时间: |
|
查看次数: |
6338 次 |
最近记录: |