Idealmente, você deve ter um
stock
campo em seu Product
modelo para manter o número de quantidades disponíveis para aquele produto. Quando alguém faz um pedido, um
order
separado instância deve ser criada com o número de quantidades do Prodduct
Especificadas. O estoque só deve ser reduzido quando o retorno de chamada for recebido para esse order
ou um webhook é recebido confirmando o pagamento. Isso não impediria que outros clientes fizessem pedidos para o mesmo produto até que o item fosse realmente vendido.
Outra abordagem poderia ser reduzir o estoque quando o cliente for para a página de retorno de chamada e liberar o estoque se o pagamento não for recebido dentro de um determinado período de tempo. A tarefa em segundo plano seria necessária para isso.
Observação: use
F
objeto de django.models
enquanto reduz o estoque para reduzir o estoque do valor do banco de dados e não do atributo de instância.