Как заполнить мои переменные WTForm? - PullRequest
15 голосов
/ 15 ноября 2011

Я включаю функцию, которая может редактировать сущность. Я хочу заполнить форму переменными из хранилища данных. Как мне это сделать? Мой код не заполняет форму:

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 Ответ

25 голосов
/ 04 декабря 2011

Вам необходимо передать свой объект через второй аргумент формы, "obj":

editAdForm = AdForm(obj=ad)

Обрисованный в кратком курсе документации здесь: http://wtforms.simplecodes.com/docs/dev/crash_course.html#editing-existing-objects

...