在django中传递模型实例,而不是__unicode__方法

时间:2012-07-13 16:42:13

标签: python django django-models django-forms

我有一个包含通过外键加入的django表单。这是一个非常大的表的外键。在表单上,​​为了防止加载一个容易导致浏览器崩溃的大量选择,我有一个jQuery自动完成,在每次击键时都会发送输入的文本。然后在表格中搜索该文本并返回合适的结果以显示。然后,在选择一个时,将id传递给隐藏的CharField。这个隐藏的CharField是ForeignKey关系的小部件。当我尝试保存表单时,我得到一个错误,我需要传递相关模型的模型实例,这是公平的。然而,我无法弄清楚如何做到这一点。我可以使用该id并执行model.objects.get(pk=id_from_form),但是如果我用结果替换POST数据,我仍然会收到错误,因为我只是传递了模型的__unicode__方法。我确定有一些我不知道的东西,但我看不出它是什么。

感谢。

1 个答案:

答案 0 :(得分:1)

尝试使用CharField并将窗口小部件设置为ModelChoiceField,而不是使用HiddenInput来存储ID。表单中的字段定义类似于:

mymodel = forms.ModelChoiceField(widget=forms.HiddenInput, queryset=MyModel.objects.all())