我是否需要使用Django Rest Framework序列化程序更新显式使用事务?

时间:2016-01-08 13:57:17

标签: django transactions django-rest-framework

根据http://www.django-rest-framework.org/api-guide/serializers/#writable-nested-representations,为了接受嵌套的序列化程序,我需要创建一个update方法。这些示例都没有使用事务,尽管它们确实修改了多个行/表。 DRF是否已经以某种方式将事务包装在事务中,或者我应该明确地将transaction.atomic()全部放在它上面?

相关公关:

3 个答案:

答案 0 :(得分:2)

相关公关与您的问题无关。 PR链接到DRF特定的异常处理程序,该处理程序绕过了默认的Django事务方案(https://github.com/tomchristie/django-rest-framework/pull/1204#issuecomment-52712621)。

DRF没有专门包装交易中的内容,让用户可以自由选择他们想要的内容。

答案 1 :(得分:2)

您还可以使用Django的ATOMIC_REQUESTS数据库设置,该设置将在执行每个请求之前应用事务,并在请求成功完成时提交。更多信息:

Database transactions - Tying transactions to HTTP requests

答案 2 :(得分:0)

首先从db导入事务模块,然后使用以下

with transtaction.atomic():
    pass

这将确保数据的原子性和一致性。

相关问题