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})
谢谢,我不知道这一点,很高兴能找到它!