python - Django ArrayField 追加,避免竞争条件

标签 python arrays django postgresql race-condition

我有一个带有 ArrayField() 的模型,并且想向其附加一个值。

我能做到:

self.my_array_field.append("foobar")

但是,由于竞争条件,这通常会失败。

所以我尝试了这样的事情:

self.my_array_field = F('my_array_field') + "foobar"

这个:

self.my_array_field = F('my_array_field').append("foobar")

还有这个:

self.my_array_field = Func(F('my_array_field'), Value("foobar"), function='array_append')

不幸的是,所有这些都彻底失败了。

您建议我如何在 django 中实现此 PostGreSQL 语句?

UPDATE my_model SET my_array_field = array_append(my_array_field, "foobar")

请注意,此语句也是等效的:

UPDATE my_model SET my_array_field = my_array_field || "foobar"

最佳答案

实际上,这个解决方案工作得很好:

self.my_array_field = Func(F('my_array_field'), Value("foobar"), function='array_append')

关于python - Django ArrayField 追加,避免竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454113/

相关文章:

可以将 unsigned int 位值复制为 float,但 float 值未正确返回到调用函数

django - 名称错误 :Admin not found in django

django - 带有 Django-Rest-Framework 的嵌套序列化器

python - 如何阻止 PyCharm 在格式化代码时插入空格以进行精确对齐?

python - 我可以在 XPath 中访问父级的子级吗?

python - Django url 是如何匹配的?

python - 什么时候在django中调用模型方法

python - Wtforms,多选文件上传

arrays - Golang 字节数组通过 channel 通信丢失数据

java - 具有随机游戏对象和难度的游戏板