Python 如何在SingleSelectField中设置默认选项值?
我是Turbogears 2.3.3和Tosca2的新手。有人能告诉我如何根据id设置默认值吗 URL:…/view?id=2 FormWidget: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
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(生日=今天)