我正在编写一个Django应用程序来预订某些资源。我的预订模式比较复杂,但想想酒店房间,你有办理登机手续和退房日期。显然,如果同时输入两个冲突的预留,则需要针对DB中的冲突数据检查每个新预留,并且可能存在竞争条件。 这就是我所做的:
# q: unevaluated QuerySet that pulls conflicting reservations from DB
# r: new reservation object
with transaction.atomic():
if not q.exists(): # no conflicts, if empty
r.save()
我的问题: