たとえば、すべてのユーザーが編集可能なすべての「トランザクション テーブル」エンティティ。誰かが同じエンティティを変更および更新したかどうかを確認するにはどうすればよいですか?
2 に答える
1
私があなたの問題を正しく理解していれば、2 人のユーザーが同じエンティティを編集している場合、そのうちの 1 人が保存できないようにする必要があります。
まず、自動的に更新される次の 2 つのプロパティを使用して、すべてのモデルにこの 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
- これら 2 つの値が同じであれば保存しても問題ありません。それ以外の場合は、このエンティティが他のユーザーによって変更されたことをユーザーに通知します。
于 2013-02-20T11:04:58.143 に答える
0
タイムスタンプを使用します。書き込んでいるオブジェクトのタイムスタンプが、オブジェクトを読み取ったときのタイムスタンプと一致しない場合、オブジェクトはその間に変更されています。
于 2013-02-20T10:39:12.517 に答える