阅读模型列表并阻止新创建

时间:2016-04-19 21:17:55

标签: django

我有一个用户可以创建和修改的\h模型。

管理员用户可以获取当天所有订单的列表并发送列表。

我希望在管理员发送列表之前,它会关闭当天的订单,以便订单关闭,直到第二天。

目前,我并没有真正看到如何避免竞争条件: - 管理员关闭订单并获取列表 - 用户同时提交订单并认为他的订单已被考虑在内。

到目前为止我想象的解决方案是:

  • 管理员点击一个按钮,该按钮提交虚假订单,表明订单当天已关闭
  • 发布表单时,会检索订单列表
  • 发布订单时,我会首先检查是否存在错误订单。如果存在,验证将失败。

但我认为竞争条件仍有可能。

是否有可能在数据库级别管理它?例如,在关闭命令时,在日期中在数据库中添加约束(新订单的日期必须至少是第二天的数据)?

1 个答案:

答案 0 :(得分:0)

您可以使用原子装饰器进行数据库事务,以检查错误的顺序。如果您在原子装饰器中添加一个检查以检查竞争条件,它可能会抛出错误并重置关闭日管理订单。 https://docs.djangoproject.com/en/1.9/topics/db/transactions/#django.db.transaction.atomic