我似乎无法找出一个好办法做到这一点,Django,从表单保存数据,而不必手动设置每个字段保存?
我有一堆表单输入字段,而不是像下面那样,我必须输入每个fieldname =“”等等,有没有一种方法来编码,以便自动保存表单中的每个字段?
b = Modelname(fieldname=request.POST['fieldname'])
b.save()
我知道这个安全问题,但可以通过通过检查有效形式值列表运行它被否定。
我似乎无法找出一个好办法做到这一点,Django,从表单保存数据,而不必手动设置每个字段保存?
我有一堆表单输入字段,而不是像下面那样,我必须输入每个fieldname =“”等等,有没有一种方法来编码,以便自动保存表单中的每个字段?
b = Modelname(fieldname=request.POST['fieldname'])
b.save()
我知道这个安全问题,但可以通过通过检查有效形式值列表运行它被否定。
当然,request.POST.items()
和request.POST.iteritems()
的工作就像在一个字典中同名的方法,返回resp。该类似对象的对象中的所有(name, value)
对(2项元组)的列表和迭代器。如果名称有多个值,那只会给你最后一个值;如果你想要所有这些,使用request.POST.iterlists()
,它们在每对的value
插槽中具有该名称的字段的所有值的列表。
因此,例如假设你不关心重复或不知道有没有,甚至片断短:
for name, value in request.POST.iteritems():
ModelName(**dict([ (name, value) ])).save()
可能就够了,虽然这肯定是更好地添加一些验证在以这种方式保存之前检查名称/值对;-)。
谢谢,我一直在摸索这一段时间,我知道必须有一些优雅的方式来做到这一点,但不能拿出它是什么..谢谢,会给它一个尝试 – Rick 2010-09-07 02:27:02
我试着这个,但我得到一个错误:“字典更新序列元素#0长度为16; 2是必需的”不知道这是指什么,我用我的模型名称替换ModelName ....我只有2个字段,我输入和他们的值都有超过2个字符在他们(只是基本的varchar字段),所以我有点困惑这个 – Rick 2010-09-07 02:51:18
编辑:误读之前的错误信息,应该说我的领域的价值小于16,(它像6字符)它似乎在说它的16) - 另外,为了澄清,我尝试返回该循环中的第一个值和名称(以检查输出),并且都正确输出,因为输入字段和它的值,但我仍然收到此错误消息 – Rick 2010-09-07 03:00:57
+1 - 考虑幸运的马尔泰利先生回答了你的问题..大风扇 – Perpetualcoder 2010-09-07 00:41:46
酷,是的,我很高兴:) – Rick 2010-09-07 02:25:51
Django自动为你管理所有这些 - 包括验证 - 通过它的form.Form和'form.ModelForm'类。 – 2010-09-07 06:15:27