Mat*_*aus 10 python google-app-engine app-engine-ndb
对于以下(损坏)函数,我想True在创建或更新实体时返回,False否则.问题是我不知道是否get_or_insert()有现有实体或插入了实体.有没有一种简单的方法来确定这个?
class MyModel(ndb.Model):
def create_or_update(key, data):
"""Returns True if entity was created or updated, False otherwise."""
current = MyModel.get_or_insert(key, data=data)
if(current.data != data)
current.data = data
return True
return False
Run Code Online (Sandbox Code Playgroud)
Gui*_*sum 29
get_or_insert()是一个简单的函数(虽然它的实现看起来很复杂,因为它试图处理不寻常的属性名称).您可以自己轻松编写:
@ndb.transactional
def my_get_or_insert(cls, id, **kwds):
key = ndb.Key(cls, id)
ent = key.get()
if ent is not None:
return (ent, False) # False meaning "not created"
ent = cls(**kwds)
ent.key = key
ent.put()
return (ent, True) # True meaning "created"
Run Code Online (Sandbox Code Playgroud)