0
我以前是a similar questio n,但我说得不对,这就是为什么需要在新帖子中阐明它。Django中的异常处理和原子请求
考虑以下Django配置和一个视图:
settings.py
DATABASES = {
'default': {
# ...
'ATOMIC_REQUESTS': True,
},
视图:
def my_view(request):
foo = Foo.objects.get(id = 1)
foo.some_field = 'new value'
foo.save()
if some_condition():
# ...
else:
return JsonResponse(json.dumps('Cusom message', ensure_ascii=False),
status = 500,
safe = False)
这段代码的问题是,如果是some_condition
foo
对象被更新不是真的,但我期望交易回滚,因为我发送状态500.任何人都可以给我一个暗示我在做什么这里错了吗?
发送500不会导致事务回滚。 –
不要使用原子请求;使用['atomic'](https://docs.djangoproject.com/en/1.10/topics/db/transactions/#django.db.transaction.atomic)上下文管理器将相关代码显式包装并发送您需要的任何响应。 –
丹尼尔,能否请您提供一个代码片段,以便我确信我实现您的建议是最合适的方式 –