2011-06-10 33 views
0

我從包含其屬性值的類實例中填充表單字段(在pygtk中)。 表單提交後,我使用新值更新了此實例。python:比較提交前後表單中的屬性值

什麼是確定表單是否返回不同值(即:已被修改)的最佳方法?我必須在更新之前製作對象實例的副本,或者在提交時返回副本 - 然後比較每個值(對我來說很重要)。

謝謝

回答

1

您需要在提交表格前後獲得數據副本。默認__eq__運算符將比較類的所有屬性,因此您可以使用before_form == after_form來查看是否有任何更改。如果你需要知道發生了什麼變化,那麼你將不得不遍歷每個屬性。

另一種方法是掛鉤表單中字段的onchange事件,並設置一個髒標誌,如果它們中的任何一個被觸發。

+0

謝謝!例如,一個使用copy.deepcopy()的對象實例拷貝? (因爲如果我內部有字典,它的參考將被共享,對吧?) – Martin 2011-06-10 09:48:28

+0

是的,這是正確的。 – 2011-06-10 09:55:00

+0

我可能會選擇Andrew的第二個建議:標記已更改的字段。 – Walter 2011-06-10 11:09:41