如何填充我的WTForm变量?

15 投票
1 回答
10763 浏览
提问于 2025-04-17 06:19

我正在启用一个可以编辑实体的功能。我想用数据存储中的变量来填充表单。请问我该怎么做呢?我的代码没有填充表单:

if self.request.get('id'):
  id = int(self.request.get('id'))
  ad = Ad.get(db.Key.from_path('Ad', id))
  im = ad.matched_images
  editAdForm = AdForm(ad)
  if str(users.get_current_user()) == str(ad.user) or users.is_current_user_admin():                    
    self.render_jinja('edit', form_url=blobstore.create_upload_url('/addimage'),
                        admin=users.is_current_user_admin(),
                        user_url= (users.create_logout_url('/'
                                ) if users.get_current_user() else users.create_login_url(self.request.uri)),
                        user= users.get_current_user(),
                        ad= ad,
                        form = editAdForm)

而是我看到了这个错误信息:

formdata应该是一个多字典类型的包装器,支持'getlist'方法:

更新

现在的解决办法是这样填充表单,但我想知道这是否真的是推荐的做法?

editAForm = AForm(name=article.name, title=article.title, text=article.text... )

1 个回答

26

你需要通过表单的第二个参数“obj”来传递你的对象:

editAdForm = AdForm(obj=ad)

详细说明可以在这里找到文档的快速入门:http://wtforms.simplecodes.com/docs/dev/crash_course.html#editing-existing-objects

撰写回答