2011-06-10 65 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