django ModelForm -初始表单值

k97glaaz  于 2023-11-20  发布在  Go
关注(0)|答案(2)|浏览(144)

我想创建一个对象示例,我自己设置(不是唯一的)somenotuniquenumber。我想建议下一个“免费”somenotuniquenumber,因为这是最常用的用例。

class TestForm:
    last_somenotuniquenumber = Process.objects.order_by("-somenotuniquenumber").first().somenotuniquenumber

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

qnakjoqk

qnakjoqk1#

你不能像在web应用程序中那样在表单构造函数中设置uid,请求是并行的,所以如果request1加载表单,那么uid是42,但是如果用户在提交表单时比request2慢,那么你将有2条记录为42。
正确的做法是把这个到模型save函数之前的super.save(*args,**kwargs)尽量靠近记录插入操作。

blmhpbnm

blmhpbnm2#

对于完整性和其他用户:

class TestForm:
    def __init__(self, *args, **kwargs):
        super()__init__(*args, **kwargs)
        self.fields["some_field"].initial = SomeModel.objects.order_by("-someField").first().someField

字符串
这可以用来创建一个具有连续编号的示例。请注意,他不知道此时可能运行的并行进程!

相关问题