2013-10-02 30 views
1

我寫了一個基於BasicUser和PropertyManager的新用戶類。現在我可以添加和更改屬性。但是當我重新啓動服務器時,它們已經消失了。Zope屬性消失

任何想法,我可以找到這種行爲的原因?

Threre是在類(_properties)中定義的許多屬性。這些不受影響。

+0

你應該真的添加代碼,這將有助於縮小問題的範圍。 –

+0

使用的代碼沒有特別之處:我使用manage_addProperty添加了屬性,並使用manage_changeProperties對其進行了更改。這工作正常,只要我不重新啓動。 – Rastaf

+0

顯示代碼的更多理由,包括類。 –

回答

1

缺失的基類是「持久」。我認爲它必須是PropertyManager的基類,但它不是。

1

重新啓動服務器時消失的數據幾乎總是會導致更改無法正確寫入數據庫的結果。

這反過來通常是因爲您正在修改列表或字典而不是將對象保存到光盤。解決這個問題有很多種方法。在屬性的情況下,您應該使用對象方法來更新和添加屬性。

這些被稱爲manage_addProperty,manage_editProperties,manage_delPropertiesmanage_changeProperties

您可以在Zope2 Book的this page的底部找到使用示例。

+0

我使用manage_addProperty和manage_changeProperties。只要服務器運行,它就可以正常工作。 – Rastaf

+0

傻了。我必須在基類中添加Persistent。 BasicUser沒有它,但用戶(來自AccesControl)。謝謝Lennart,你用你的答案指出了我的正確方向。 – Rastaf