Django为外键和会话值形成self.fields?

时间:2015-06-10 19:37:31

标签: python django

我有一个表单,我试图从session向隐藏字段添加初始值。

当我使用

self.fields['myfield'] = forms.CharField(initial=request.session['value']) 

会话值已正确呈现,但我收到错误:

Cannot assign "u'123'": "Model.filed" must be a "Model" instance. 

我知道错误是因为它是一个外键字段。

当我这样做时

myfield = forms.CharField(initial=request.session['value'])

表单正常运行但request.session['value']未呈现且初始值为空。

建议?

1 个答案:

答案 0 :(得分:2)

首先确保123(或其他)是ForeignKey字段中引用的模型的有效主键。

您可以在将value项添加到session词典的位置阻止该行为。

现在,initial参数正在寻找一个有效的对象,所以就这样给它。

self.fields['myfield'] = forms.CharField(
    initial=MyOtherModel.objects.get(pk=request.session['value'])
)

注意:我假设MyOtherModelForeignKey