我正在django中创建一个应用程序,为此,我有一个表单,其中字段'Person'是ForeignKey字段。因此,当我运行应用程序时,它会显示一个表单,正确显示一个组合框,让我选择我想要的“人物”对象。但问题是当我试图在视图中捕获信息时。
我使用POST方法发送数据,因此,当我尝试在视图中获取所选“Person”对象的值时,我会执行下一步:
selected_person = request.POST['person']
(人是字段名称)
当我测试变量'selected_person'的值是一个数字(具体地说,是组合框中元素的选定索引的数量)时,我感到很惊讶。
我的问题是:我如何获得COMBOBOX中所选元素的对象值?
比你这么多!
答案 0 :(得分:0)
不,它是数据库中Person对象的主键。所以你可以通过Person.objects.get(pk=selected_person)
获得它。
但实际上你应该使用Django表单,然后通过form.cleaned_data['person']
为你提供Person对象。
另请注意,为清楚起见,这是一个选择字段,或下拉列表,而不是组合框;组合框是一个桌面小部件,同时包含下拉列表和编辑字段。
答案 1 :(得分:0)
具体来说,问题是我没有在模型中定义“primary_key”值,因此,下拉列表给出的数字是django附加到模型的默认主键。如果我为模型定义了自定义主键,则在下拉列表中选择元素会为我提供主键。