如何在django中将隐藏的输入值插入数据库

时间:2015-08-10 09:52:56

标签: python django django-class-based-views

我在模型的帮助下创建了表单。我已经用django形式手动创建了隐藏的输入值,语法如下

 <input type="hidden" value="123" name="fourth" />

我的django html页面看起来像这样

first.html

 <form action="" method="POST">
    {{form.first}}
    {{form.second}}
    {{form.third}}
    <input type="hidden" value="123" name="fourth"/>
 </form>

问题是表单提交时我可以获得第一个,第二个,第三个的值,并且可以使用 form.save()插入值。但我无法插入第四个值。因为我手动创建隐藏输入值。如何将第四个值插入数据库。 Plz任何人都帮助我这样做。

我的表格专栏: 第一个第二个第三个第四个

1 个答案:

答案 0 :(得分:2)

那里有2个不同的表单变量

  • Django表单字段(第一,第二,第三
  • 原始表单字段(第四

要检索Django表单字段,我会使用类似的东西:

if form.is_valid():
    field_name = form.cleaned_data['field_name'].

要获取原始字段第四,您只需访问 request.POST ,如:

yourVar = request.POST['fourth']

# I'm used to the  'get' method like
yourVar = request.POST.get('fourth', '')

如果request.POST.get('fourth', '')

中没有“第四个”键,则使用最后一条指令request.POST来避免错误

编辑:将非表单字段添加到数据库

我假设你正在使用某种模型表单而你想在执行form.save()时创建实例,但是你需要将隐藏字段第四个添加到例如,要这样做,你可以这样做:

instance = form.save()
instance.fourth_field = request.POST.get('fourth', '')
instance.save()

我认为如果模型中需要fourth_field,这可能会返回错误,为避免这种情况,您可以执行以下操作:

if form.is_valid():  # This statement cleans all fields

   field1 = form.cleaned_data['first']
   field2 = form.cleaned_data['second']
   field3 = form.cleaned_data['third']
   field4 = request.POST.get('fourth', '')

   instance = YourModel(first=first, second=second, third=third, fourth=fourth)
   instance.save()