2010-04-26 123 views
7

如何預填充Formish表單?根據文檔的明顯方法似乎不正確。利用所提供的例子之一:如何預先填充Python Formish表單?

import formish, schemaish 
structure = schemaish.Structure() 
structure.add('a', schemaish.String()) 
structure.add('b', schemaish.Integer()) 
schema = schemaish.Structure() 
schema.add('myStruct', structure) 
form = formish.Form(schema, 'form') 

如果我們經過了一個有效的請求對象:

form.validate(request) 

的輸出是這樣的結構:

{'myStruct': {'a': 'value', 'b': 0 }} 

然而,預填使用defaults的表格要求如下:

form.defaults = {'myStruct.a': 'value', 'myStruct.b': 0} 

dottedish程序包有一個DottedDict對象,可以將嵌套的字典轉換爲點字典,但這種不對稱看起來不正確。有一個更好的方法嗎?

回答

1

不,不需要用虛線快譯通,你可以很容易地使用驗證後的風格字典預填充表單:

form.defaults={'myStruct': {'a': None, 'b': 'default_value'}} 

也許有舊版本formish的,嘗試更新庫。