代码之家  ›  专栏  ›  技术社区  ›  Rick

Django,从窗体保存数据而不必手动设置要保存的每个字段?

  •  2
  • Rick  · 技术社区  · 15 年前

    我好像想不出一个好办法,

    我有一堆表单输入字段,不必像下面那样输入每个fieldname=“”之类的内容,是否有方法对其进行编码,以便自动保存表单中的每个字段?

    b = Modelname(fieldname=request.POST['fieldname'])
    b.save()
    

    我意识到了这方面的安全问题,但是可以通过在检查有效表单值的列表中运行来否定它。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Alex Martelli    15 年前

    request.POST.items() request.POST.iteritems() (name, value) 在类似dict的对象中对(2项元组)。如果一个名称有多个值,则只会给出最后一个值;如果需要所有值,请使用 request.POST.iterlists() ,在 value 列表 具有该名称的字段的所有值。

    for name, value in request.POST.iteritems():
        ModelName(**dict( [ (name, value) ] )).save()
    

    可能就足够了,不过在以这种方式保存名称/值对之前,最好添加一些名称/值对的验证检查;-)。