【问题标题】:atomic model save in django原子模型保存在 Django
【发布时间】:2015-05-28 19:41:03
【问题描述】:

我有三个模型 Question、Submission、UserResult。用户提交问题的答案,该答案由系统评分并存储在提交中。

用户在他/她提交的所有问题中,一个问题的得分最高。这个分数保存在一个名为 UserResult 的模型中(它有三个字段,一个外键到 Question,另一个到 User 和一个整数分数)

我要做的是确保在保存提交时更新相关的 UserResult。实际上,当结果未更新时,最好不要存储提交。因此,只有在正确更新 UserResult 时才应保存提交。所以这整个过程应该是原子的。处理这个问题的正确方法是什么?

【问题讨论】:

  • 发布代码会让我们更轻松
  • 我还没有编码。我想知道在开始编码之前要做什么
  • 提交保存时,调用UserResult更新方法,将保存方法标记为@transaction.atomic
  • 您可以覆盖Submission.save(...) 方法或使用@post_save 信号。保存Submission 后,您可以检查是否有正确的UserResult 记录。如果不是——你删除Submission
  • @Gocht:我也可以使用信号吗? (如果我用 transaction.atomic 标记保存,它也会在保存前/后保存信号上工作吗?)

标签: django atomic


【解决方案1】:

在提交的save 方法中,调用UserResult update 方法。并将Submission的save方法标记为@transaction.atomic。那么如果在更新 UserResult 时发生错误,提交将不会被保存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2013-05-21
    • 1970-01-01
    • 2020-05-18
    • 2013-05-13
    • 2018-10-07
    • 2019-10-06
    • 2019-08-22
    相关资源
    最近更新 更多