0

如何创建编辑表单。对于 url edit?id=1121 我想显示预填充的数据

 EditForm(twf.Form):  
    class child(twf.TableLayout):  
       name= twf.TextField(name="name",value=DBSession.query(student.name).filter(student.id == <id passed in url>).distinct().all())


    @expose ('edit')  
   def edit(self, id)  

       return dict(page='edit', , form=EditForm(action='/save')  

模板:

    <div>${form.display()}</div>  
4

1 回答 1

1

有几种方法可以实现这一点,但我想说最干净的方法是将值从控制器操作传递给表单,如http://turbogears.readthedocs.io/en/latest/turbogears/widgets_forms 所示。 html#displaying-forms

在您的具体示例中,它应该产生一个仅声明需要编辑的字段和对已编辑对象 ID 的引用的表单:

class EditForm(twf.Form):  
    class child(twf.TableLayout):  
       student_id = twf.HiddenField()
       name = twf.TextField(name="name")

然后在控制器中,您可以获取已编辑的对象并将值提供给表单:

   @expose('edit')  
   def edit(self, id):
       edited_student = DBSession.query(student).filter(student.id==id).first()
       return dict(page='edit', 
                   form=EditForm(action='/save', 
                                 value=dict(student_id=id, 
                                            name=edited_student.name))

请记住,这只是一个概念证明,我没有测试代码并且它缺乏适当的验证/错误处理。但它几乎应该给出这样的想法,即您只需value在显示时通过参数将学生姓名传递给表单。

于 2018-07-04T13:29:12.507 回答