2011/05/12

Values for Archetypes Field and Widget

StringField 搭配 StringWidget 或 SelectionWidget 是最簡化的情況,儲存的資料是 string,如果 StringField 搭配 MultiSelectionWidget 或 InAndOutWidget,儲存的資料就是 list。前者的空值是 '',後者的空值是 [''],使用 page template 顯示時,就要額外處理它們的差異。例如:
<div tal:condition="context/myfield">
My Field:
<span metal:use-macro="python:context.widget('myfield', mode='view')" />
</div>
當資料是空的 string 時,整個 <div /> 並不會顯示,當資料是空的 list 時,還是會出現 My Field: [''] 之類的畫面。
一個簡單的處理方式是:
<div tal:condition="python:context.myfield != ['']">
My Field:
<span metal:use-macro="python:context.widget('myfield', mode='view')" />
</div>

No comments: