Python 如何在SingleSelectField中设置默认选项值?

Python 如何在SingleSelectField中设置默认选项值?,python,turbogears2,toscawidgets,Python,Turbogears2,Toscawidgets,我是Turbogears 2.3.3和Tosca2的新手。有人能告诉我如何根据id设置默认值吗 URL:…/view?id=2 FormWidget: FruitForm(twf.Form): class child(twf.TableLayout): fruit=twf.SingleSelectField(options=DBsession.query(Fruit.id, Fruit.name) <div>${form.display(valu

我是Turbogears 2.3.3和Tosca2的新手。有人能告诉我如何根据id设置默认值吗

URL:…/view?id=2

FormWidget

FruitForm(twf.Form):  
    class child(twf.TableLayout):  
        fruit=twf.SingleSelectField(options=DBsession.query(Fruit.id, Fruit.name)  
<div>${form.display(value=value)}</div>  
型号:水果
身份证,姓名

控制器

@expose ('view')  
def view(self, id)  
    fruit=DBSession.query(Fruit).get(id)  
    return dict(page='view', value=fruit, form=FruitForm(action='/save')  
模板

FruitForm(twf.Form):  
    class child(twf.TableLayout):  
        fruit=twf.SingleSelectField(options=DBsession.query(Fruit.id, Fruit.name)  
<div>${form.display(value=value)}</div>  
${form.display(value=value)}
问题
当url为/view?id=2时,在SingleSelectField中如何显示id为2的水果


谢谢

您的代码片段中可能有两个错误:

第一个是加载
选项
时不使用
延迟
,这会导致在应用程序启动时(导入表单时)执行查询,而不是在显示表单时执行查询,这可能不是您想要的

第二个是将水果本身设置为表单值,而表单的值应该是子值的字典(因为表单实际上有多个值,每个子值一个)


我创建了一个关于可能的工作解决方案的Runnable的简短示例:

谢谢@amol。使用
延期
确实节省了我的时间。关于第二件事,我遵循官方网站上的turbogears食谱,并阅读到所有字段都必须在
Child
类中指定。在我上面的例子中,除了singleselectfield之外,我还有一些其他字段。我的问题是,如果
BirthdayForm
foultform
的子类,如何将参数传递给
BirthdayForm
?将字段指定到
child
子类是正确的,它允许保持布局和表单本身的分离,但不会改变表单行为。我更新了示例以使用
Form->TableLayout
层次结构,但是您仍然需要将表单的值作为
dict
传递:
Form\u values=dict(生日=今天)