如何在django视图中获取组合框的对象值?

时间:2015-06-10 17:42:23

标签: django view combobox

我正在django中创建一个应用程序,为此,我有一个表单,其中字段'Person'是ForeignKey字段。因此,当我运行应用程序时,它会显示一个表单,正确显示一个组合框,让我选择我想要的“人物”对象。但问题是当我试图在视图中捕获信息时。

我使用POST方法发送数据,因此,当我尝试在视图中获取所选“Person”对象的值时,我会执行下一步:

 selected_person = request.POST['person']

(人是字段名称)

当我测试变量'selected_person'的值是一个数字(具体地说,是组合框中元素的选定索引的数量)时,我感到很惊讶。

我的问题是:我如何获得COMBOBOX中所选元素的对象值?

比你这么多!

2 个答案:

答案 0 :(得分:0)

不,它是数据库中Person对象的主键。所以你可以通过Person.objects.get(pk=selected_person)获得它。

但实际上你应该使用Django表单,然后通过form.cleaned_data['person']为你提供Person对象。

另请注意,为清楚起见,这是一个选择字段,或下拉列表,而不是组合框;组合框是一个桌面小部件,同时包含下拉列表和编辑字段。

答案 1 :(得分:0)

具体来说,问题是我没有在模型中定义“primary_key”值,因此,下拉列表给出的数字是django附加到模型的默认主键。如果我为模型定义了自定义主键,则在下拉列表中选择元素会为我提供主键。