python - 如何填充我的 WTForm 变量?

标签 python google-app-engine jinja2 wtforms

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

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 should be a multidict-type wrapper that supports the 'getlist' method:

更新

解决方法是像这样填充表单,但我想知道这是否真的是推荐的方法?

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

最佳答案

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

editAdForm = AdForm(obj=ad)

在此处的文档速成类(class)中概述:http://wtforms.simplecodes.com/docs/dev/crash_course.html#editing-existing-objects

关于python - 如何填充我的 WTForm 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8128238/

相关文章:

python - 使用pip_pypy3安装pyarrow时出现 "Could NOT find Arrow"错误

google-app-engine - 正在提供的 Google App Engine 旧版本静态文件

python - Google 安全浏览查找 API 中的请求无效

sql - 如何通过循环变量在 dbt 中多次运行 SQL 模型?

python - Flask-Babel 如何在 Jinja 模板文件中使用翻译

Python YACC EOF 立即到达

python - 在 Spyder IPython 控制台中自动关闭括号和引号?

python - 在内置函数之后命名变量的正确时间是什么时候?

database - Google App Engine 乐观并发

python - 在 Linux 下模板文件更改时重新加载 Flask 应用程序