Django ArrayField 追加,避免竞争条件
Django ArrayField append, avoid 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')
我有一个带有 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')