django如何访问modelforms变量?

时间:2012-06-06 10:27:26

标签: python django

我有一个像这样的模型:

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

然后在模板中我看到传入的值!没有其他代码更改,任何想法?

2 个答案:

答案 0 :(得分:1)

Modelform只是一个类,所以你可以直接访问modelform变量。没有必要进行初始化。

答案 1 :(得分:1)

参数“initial”在forms.Form类中使用,通常用于初始化您希望在呈现表单时自动填充的值。

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

form = CommentForm()
form.storyId = xyz

在上面的代码中,您直接将值分配给Python实例的属性,然后属性的类型也会更改。

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

一旦你指定了form.storyId = xyz,那么storyId将获取xyz的值,并且不会被渲染为表单字段。

我希望这很清楚。