如何在Django中避免种族更新postgres.JSONField?

时间:2017-09-28 12:11:48

标签: django postgresql race-condition

使用Django我学会了在更新模型上的值时使用F对象来缓解竞争条件。

现在我有一个更复杂的问题 - 我有一个使用PostgreSQL的JSONField的模型,我想更新该字段中包含的值。我尝试过这样的事情:

year = arrow.utcnow().date().year
my_model.stats['views'][year] = F('stats__%s' & year) + 1

不幸的是会弹出错误:TypeError: Object of type 'CombinedExpression' is not JSON serializable

我知道可以通过使用一些中间模型来模拟JSON结构来完成它,但这里是不可能的。所以问题就像在标题中一样 - 如何在Django中执行此操作?如果不可能,那么SQL语法会做什么?

0 个答案:

没有答案