Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 阅读模型列表并阻止新创建_Django - Fatal编程技术网

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

Django 阅读模型列表并阻止新创建,django,Django,我有一个订单模型,用户可以创建和修改它 管理员用户可以获取一份当天所有订单的列表并发送该列表 我想在管理员发送列表之前,它会关闭当天的订单,这样订单将关闭到第二天 目前,我真的不知道如何避免比赛条件: -管理员关闭订单并获取列表 -用户同时提交订单,并认为其订单已被考虑在内 到目前为止,我设想的解决方案是: 管理员点击一个按钮,该按钮提交了一份虚假订单,表明当天订单已关闭 过帐表单时,将检索订单列表 在发布订单时,我将首先检查是否存在虚假订单。如果存在,验证将失败 但我认为比赛条件仍然是可能

我有一个
订单
模型,用户可以创建和修改它

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

我想在管理员发送列表之前,它会关闭当天的订单,这样订单将关闭到第二天

目前,我真的不知道如何避免比赛条件: -管理员关闭订单并获取列表 -用户同时提交订单,并认为其订单已被考虑在内

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

  • 管理员点击一个按钮,该按钮提交了一份虚假订单,表明当天订单已关闭
  • 过帐表单时,将检索订单列表
  • 在发布订单时,我将首先检查是否存在虚假订单。如果存在,验证将失败
但我认为比赛条件仍然是可能的


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

您可以使用数据库事务的原子装饰器来检查错误订单。如果在atomic decorator中添加一个检查来检查竞争条件,它会抛出一个错误并重置截止日管理命令

您可以对数据库事务使用原子装饰器来检查错误的顺序。如果在atomic decorator中添加一个检查来检查竞争条件,它会抛出一个错误并重置截止日管理命令

谢谢,我不知道这件事。我将尝试实现它,但无论如何它看起来是正确的解决方案。谢谢,我不知道这一点。我将尝试实现它,但无论如何,它看起来是正确的解决方案。