如何检查是否有人更改了实体数据

时间:2013-02-20 10:34:32

标签: python google-app-engine

例如,所有“交易表”实体都可以为所有用户编辑。我如何检查,有人更改并更新了同一个实体吗?

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您需要确保如果两个人正在编辑同一个实体,则其中一个人无法保存。

首先,对于具有这两个自动更新的属性的所有模型,使用此Base类是个好主意:

class Base(ndb.Model):
  created = ndb.DateTimeProperty(auto_now_add=True)
  modified = ndb.DateTimeProperty(auto_now=True)

现在,在模型中拥有modified属性有助于在更新过程中注意到某些内容是否已被更改(其他人):

  • 在编辑之前,请阅读modified属性并将其存储在before_modified
  • 保存之前,请先阅读modified媒体资源并将其与before_modified
  • 进行比较
  • 如果这两个值相同则保存是安全的,否则通知用户该实体已被其他人更改

答案 1 :(得分:0)

使用时间戳。如果您正在编写的对象的时间戳与读取时该对象的时间戳不匹配,则会同时对其进行修改。