0

我是 Turbogears 2.3.3 和 Toscawidgets 2 的新手。谁能告诉我如何根据 id 设置默认值?

网址:.../view?id=2

窗体小部件

FruitForm(twf.Form):  
    class child(twf.TableLayout):  
        fruit=twf.SingleSelectField(options=DBsession.query(Fruit.id, Fruit.name)  

型号:水果
编号、名称

控制器

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

模板

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

问题
当url为/view?id=2时,SingleSelectField中如何显示id为2的水果?

谢谢。

4

1 回答 1

1

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

第一个是options在不使用的情况下加载的,Deferred这会导致在应用程序启动时执行查询(导入表单时),而不是在显示表单时执行,这可能不是您想要的。

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

我在 Runnable 上创建了一个可能的工作解决方案的简短示例:http ://runnable.com/U-tO4xSN7Ch6wWS7/turbogears-forms-fill-singleselect-value-for-pythonpos

于 2014-08-13T11:43:45.993 回答