我很驚訝這很難做到。然而,我想出了這個,這似乎至少對我的簡單情況起作用。任何人都可以推薦更好的方法?如何確定Django模型中的字段是否已更改
def field_changed(self, fieldname):
"""Tests if the value of the field changed from the original data"""
orig_value = self.fields[fieldname].initial or getattr(self.instance, field, None)
orig_value = getattr(orig_value, 'pk', orig_value)
if type(orig_value) is bool:
# because None and False can be interchangeable
return bool(self.data.get(fieldname)) != bool(orig_value)
else:
return unicode(self.data.get(fieldname)) != unicode(orig_value)
有疑問時,搜索文檔;或者我也發現檢查Django代碼是找到所有可用方法的好方法。 –
是的,django的源代碼是有據可查的,它在某些方面是相當有教益的。同樣好的IDE可以幫助您從項目文件中輕鬆訪問源代碼。 – alTus