2009/11/07

TypeError: iteration over non-sequence

這是將 Data.fs 昇級至 Plone 3.3.1 後,同時使用 Plone 2.x 舊式模組時,遇到的問題,症狀是無法將目錄更名,而這個目錄內含 custom content type 的資料。

第一個線索來自 Plone Error Reference 的說明,表示要留意 log 裡 "Could not import class" 的訊息。不過,我沒在 log 裡看到這類的訊息。

第二個線索來自 Archetype Fields Supporting Multiple Selection 的範例,表示要留意 custom content type 裡的欄位屬性,使用 multiValued = 1 時,要配合 LinesField 的欄位。檢查後,看來也都正常。

第三個線索是 ZMI 裡 custom content type 的 Size 欄位空白,而且 log 裡有下列的訊息:
  Module Products.CMFPlone.CatalogTool, line 272, in getObjSize
Module Products.Archetypes.BaseObject, line 590, in get_size
Module Products.Archetypes.Field, line 1501, in get_size
Module Products.Archetypes.Field, line 1486, in get

綜合以上的線索,我懷疑是 custom content type 曾經改版,但資料早在改版前已鍵入,造成版本不一致。

之前 custom content type 也發生過 AttributeError: __getitem__ 的錯誤,此刻的結論,就是再仔細檢查 custom content type 的內容,而且優先清查 LinesField 欄位。

No comments: