Как вернуть ввод данных назад, если второй запрос не сработал

Вот мой код:

data = {
    "order_type":"order",
    "user_id":user_id,
    "order_total":order_total,
    ...
}
serialzier = UserOrderSer(data=data)
if serialzier.is_valid(raise_exception=True):
    serialzier.save()

product_data = []
for i in all_response:
    product_data.append({
        "order_id": serialzier.data['order_id'],
        "product_id":i['product_id'],
        "product_name":i['product_name'],
        "product_price": i['selling_price'],
        ...
    })

product_serializer = UserOrderProductSer(data=product_data,many=True)
if product_serializer.is_valid(raise_exception=True):
    product_serializer.save()

Если product_serializer.is_valid не работает, то я хочу, чтобы serialzier = UserOrderSer(data=data) запись вернулась обратно. Поскольку я использую идентификатор первой записи во второй записи, я не могу проверить .is_valid обе одновременно

DOCS

Атомарность является определяющим свойством транзакций базы данных. позволяет нам создать блок кода, внутри которого атомарность на базы данных гарантирована. Если блок кода успешно завершен, изменения фиксируются в базе данных. Если возникает исключение, изменения откатываются назад.

Вы можете использовать transaction.atomic()

Вернуться на верх