Я пытаюсь создать представление, в котором я сохраняю объект, но я хочу, чтобы отменить, которые сохраняются, если возникает какое-то исключение. Это то, что я пробовал:Django - откат с транзакцией Atom
class MyView(View):
@transation.atomic
def post(self, request, *args, **kwargs):
try:
some_object = SomeModel(...)
some_object.save()
if something:
raise exception.NotAcceptable()
# When the workflow comes into this condition, I think the previous save should be undome
# Whant am I missing?
except exception.NotAcceptable, e:
# do something
Что я делаю неправильно? даже при возникновении исключения some_object
по-прежнему находится в базе данных.
Это представление относится к API, поэтому я думаю, что мне нужно обработать любую возможную ошибку, чтобы дать ответ jpper json. Нельзя ли сделать это с помощью атомного декоратора? – Gocht
Не с декоратором imho, потому что он обрабатывает транзакцию вне вашей функции. Приятный пример с менеджером контекста! – jpic
У вас должен быть атомный блок внутри try .. кроме блока, как в ответе. Вы также можете использовать атомный декоратор на экране, если хотите. – Alasdair