类似于修改个人资料,表单对应数据库
flask-WTF 从表单获得的 form.data 是一个字典的结构:{id: 1, name='123'}
因为如果用下面这种方法更新数据,表单长了这样重复的代码就太长了,所以请问 sqlalchemy 有没有把字典传进去自动处理?
a.id = form.data['id']
a.name = form.data['name']
db.session.commit()
类似于修改个人资料,表单对应数据库
flask-WTF 从表单获得的 form.data 是一个字典的结构:{id: 1, name='123'}
因为如果用下面这种方法更新数据,表单长了这样重复的代码就太长了,所以请问 sqlalchemy 有没有把字典传进去自动处理?
a.id = form.data['id']
a.name = form.data['name']
db.session.commit()
楼上都好像没有答道楼主的点上,楼主的需求大概是想把form直接转成orm的数据
楼主大概需要这个 http://wtforms.simplecodes.com/docs/0.6.1/forms.html#wtforms.form.Form.populate_obj
def edit_profile(request):
user = User.objects.get(pk=request.session['userid'])
form = EditProfileForm(request.POST, obj=user)
if request.POST and form.validate():
form.populate_obj(user)
user.save()
return redirect('/home')
return render_to_response('edit_profile.html', form=form)
用getter和setter方法啊
for key in form.data.iterkeys():
if(hasattr(a,key)):
setter(a,key,form.data[key])
sqlalchemy官方文档上有说明,更新数据库表记录一般都是先查出来,然后再更新,最后提交数据库会话。
然而sqlalchemy也支持sql语句,可以自己写,不过自己写的可能比较困难,要考虑到很多安全方面的问题
附官方文档链接http://docs.sqlalchemy.org/en/latest/cor...
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
a.update(form.data)
这是字典的一个基本方法,与sqlalchamy无关。