Как я могу предотвратить создание нескольких экземпляров при многократном запросе в django?

Привет всем, у меня есть проект, включающий функцию оплаты между пользователем и пользователем. Но у меня есть проблема, когда много пользователей покупают продукт.Много объектов оплаты будет создано больше, чем доступных продуктов. Как я могу решить эту проблему?

products_avaliable = Product.objects.filter(on_sell=true) 
for product in products_avaliable:
   payment = Payment()
   payment.buyer = ....
   payment.seller = product.owner
   payment.save()
   product.on_sell = False
   product.save()

когда добавить делей

    products_avaliable = Product.objects.filter(on_sell=true)
    for product in products_avaliable:
       payment = Payment()
       payment.buyer = ....
       payment.seller = product.owner
       payment.save()


       time.sleep(10) # simulate to slow server or many request


       product.on_sell = False
       product.save()

когда я пытаюсь сделать time.delay перед созданием платежа (симуляция, когда сервер медленный или может запросить пользователь), платеж создаст много объектов

Вы можете проверить, является ли объект on_sell перед фиксацией в БД:

for product in products_avaliable:
    payment = Payment()
    payment.buyer = ....
    payment.seller = product.owner

    product.on_sell = False

    product.refresh_from_db()  # update the object

    if product.on_sell:
        payment.save()
        product.save()
    else:
        ...
Вернуться на верх