Django,如何无需手动设置每个字段保存表单数据?

2 投票
1 回答
2128 浏览
提问于 2025-04-16 03:47

我似乎找不到一个好的方法来解决这个问题。

我有很多表单输入框,而不是像下面这样一个个手动输入每个字段名 = "",有没有办法编写代码,让它自动保存表单中的每个字段呢?

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()

就可能足够了,不过在保存之前,最好还是加一些对名字/值对的验证检查,这样会更好;-)。

撰写回答