我有一个用户可以创建和修改的\h
模型。
管理员用户可以获取当天所有订单的列表并发送列表。
我希望在管理员发送列表之前,它会关闭当天的订单,以便订单关闭,直到第二天。
目前,我并没有真正看到如何避免竞争条件: - 管理员关闭订单并获取列表 - 用户同时提交订单并认为他的订单已被考虑在内。
到目前为止我想象的解决方案是:
但我认为竞争条件仍有可能。
是否有可能在数据库级别管理它?例如,在关闭命令时,在日期中在数据库中添加约束(新订单的日期必须至少是第二天的数据)?
答案 0 :(得分:0)
您可以使用原子装饰器进行数据库事务,以检查错误的顺序。如果您在原子装饰器中添加一个检查以检查竞争条件,它可能会抛出错误并重置关闭日管理订单。 https://docs.djangoproject.com/en/1.9/topics/db/transactions/#django.db.transaction.atomic