django ModelForm - 初始表单值

问题描述 投票:0回答:1

我想创建一个对象实例,我自己在其中设置(不是唯一的)

uid
。我想建议下一个“免费”
uid
,因为这是最常用的用例。

class TestForm:
    last_uid = Process.objects.order_by("-uid").first().uid
    

如果我第一次使用该表单,

last_uid
中的值是正确的(假设它是42),但如果我创建第二个实例,
last_uid
仍然是相同的值(再次是42,但我希望它43)。我是否必须将
last_uid
交给表单并将其提取到
__init__()
中,以确保在每次新调用表单时正确生成它?

django django-forms
1个回答
0
投票

您无法像在Web应用程序中那样在表单构造函数中设置uid,请求是并行的,因此如果request1加载表单,则uid为42,但如果用户发布表单的速度比request2慢,那么您将有2条记录42.

正确的做法是在

save
之前的模型
super.save(*args,**kwargs)
函数中,尽可能接近记录插入操作。

© www.soinside.com 2019 - 2024. All rights reserved.