使用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语法会做什么?