2011-11-14 25 views
14

Tôi đang bật chức năng có thể chỉnh sửa đối tượng. Tôi muốn điền vào biểu mẫu với các biến từ kho dữ liệu. Tôi làm nó như thế nào? Mã của tôi không cư dạng:Làm cách nào để điền các biến WTForm của tôi?

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) 

Thay vào đó tôi thấy thông báo lỗi này:

formdata phải là một multidict kiểu wrapper có hỗ trợ 'getlist' phương pháp:

Cập nhật

Cách giải quyết là điền vào biểu mẫu như sau Tôi tự hỏi nếu điều này thực sự là cách được đề nghị?

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

Trả lời

25

Bạn cần phải vượt qua đối tượng của bạn qua số thứ hai của hình thức, "obj":

editAdForm = AdForm(obj=ad) 

được nêu trong tài liệu hướng dẫn quá trình sụp đổ ở đây: http://wtforms.simplecodes.com/docs/dev/crash_course.html#editing-existing-objects

+1

Cảm ơn bạn Thomas cho các giải pháp. –

+1

Tuyệt vời! Tôi đã nhầm lẫn giữa việc tìm kiếm điểm kết thúc của form.populate_obj();) – swdev

Các vấn đề liên quan