【发布时间】: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 标记保存,它也会在保存前/后保存信号上工作吗?)