Django,如何无需手动设置每个字段保存表单数据?
我似乎找不到一个好的方法来解决这个问题。
我有很多表单输入框,而不是像下面这样一个个手动输入每个字段名 = "",有没有办法编写代码,让它自动保存表单中的每个字段呢?
b = Modelname(fieldname=request.POST['fieldname'])
b.save()
我知道这样做可能会有安全问题,但可以通过一个检查有效表单值的列表来解决这个问题。
1 个回答
3
当然,request.POST.items()
和 request.POST.iteritems()
的工作方式和字典里的同名方法一样,前者返回一个包含所有 (名字, 值)
对的列表,后者则返回一个迭代器,可以逐个访问这些对。如果某个名字有多个值,这两个方法只会给你最后一个值;如果你想要所有的值,可以使用 request.POST.iterlists()
,这个方法在每个对的 值
部分会返回一个包含所有值的 列表,适用于那些名字有多个值的字段。
所以,假设你不在乎重复值,或者你知道没有重复值,像下面这样简单的代码:
for name, value in request.POST.iteritems():
ModelName(**dict( [ (name, value) ] )).save()
就可能足够了,不过在保存之前,最好还是加一些对名字/值对的验证检查,这样会更好;-)。