我正在实现一个 Django 模型中的字段,该字段调用以下函数作为默认值:
def get_default_value():
a = MyModel.objects.aggregate(max_id=Max('id'))
return get_unique_value_based_on_num(a['max_id'] or 0)
class MyModel:
default_value_field = CharField(default=get_default_value)
虽然我可能错了,但我担心这种实现可能会导致竞态条件。
有没有更好的方法来做这件事?也许使用F对象或其他什么东西?
select_for_update
来查看它是否可行。我想这也是一个有效的替代方法,所以接受它。在循环内的save
后面不应该有break
吗? - sagarchaliseselect_for_update
,但它似乎正是你所需要的。如果你成功使用它解决了问题,应该发布一个答案并接受它。 - aumo