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

时间:2014-08-12 08:47:50

标签: python turbogears2 toscawidgets

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

网址:... /查看?id = 2

FormWidget

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

模型:水果
id,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的水果?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

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