我怎么能防止创建多个实例,而多请求在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()

when add delay

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()

当我尝试在支付创建之前延迟时间(模拟当服务器变慢或用户可能请求时),支付将创建许多对象

您可以在提交到DB之前检查对象是否为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:
...

最新更新