Как вернуть ввод данных назад, если второй запрос не сработал
Вот мой код:
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
обе одновременно
Атомарность является определяющим свойством транзакций базы данных. позволяет нам создать блок кода, внутри которого атомарность на базы данных гарантирована. Если блок кода успешно завершен, изменения фиксируются в базе данных. Если возникает исключение, изменения откатываются назад.
Вы можете использовать transaction.atomic()