Python django如何访问modelforms变量?

Python django如何访问modelforms变量?,python,django,Python,Django,我有这样一个模型: class CommentForm(forms.ModelForm): storyId = forms.IntegerField(required=True, widget=forms.HiddenInput()) postId = forms.IntegerField(required=True, widget=forms.HiddenInput()) 现在我想更改“storyId”的值 我发现,在我的代码中,我需要这样做: form = CommentF

我有这样一个模型:

class CommentForm(forms.ModelForm):
    storyId = forms.IntegerField(required=True, widget=forms.HiddenInput())
    postId = forms.IntegerField(required=True, widget=forms.HiddenInput())
现在我想更改“storyId”的值

我发现,在我的代码中,我需要这样做:

form = CommentForm()
form.initial['storyId'] = xyz
或者在模型的init中,我需要:

self.initial['storyId'] = xyz
“首字母”在做什么?为什么我不能直接去:

form = CommentForm()
form.storyId = xyz
谢谢

如果运行
form.storyId=xyz
,则更新,然后在模板中,我将看不到传入的值。如果我跑

form.initial['storyId'] = xyz

然后在模板中,我确实看到了传入的值!没有其他代码更改,有什么想法吗?

Modelform只是一个类,所以您可以直接访问Modelform变量。不需要初始值。

参数“initial”用于表单中。表单类通常用于初始化一个值,您希望在呈现表单时看到该值是自动填充的

对于ModelForm,当需要自动填充从表单的init方法调用的字段时,使用initial

form = CommentForm()
form.storyId = xyz
在上面的代码中,您直接将值赋给Python实例的属性,然后该属性的类型也会改变

变量storyId实际上是一个django.forms.fields.IntegerField,它有一个参数“initial”,用于初始化该值

一旦指定form.storyId=xyz,那么storyId将采用xyz的值,并且不会呈现为表单字段


我希望这是清楚的。

当您创建表单时,您也可以将
initial
作为参数传递
form=CommentForm(initial={'storyId':xyz})
谢谢,我不知道这一点,很高兴能找到它!