Google App Engine-数据存储区get_or_insert key_name混淆


问题内容

我感到困惑get_or_insert(..)。我应该通过什么key_name?考虑以下示例:

class Person(db.model)
    name = db.StringProperty(required=True)

假设没有两个人可以使用相同的名字。假设我要获取或插入一个新Person的name Peter,我的get_or_insert声明会是什么样?

干杯,

皮特


问题答案:

这里可能令人困惑的是,键没有直接显示在模型声明中,因此name = db.StringProperty不需要示例中的位。get_or_insert将键名作为其第一个(必需)参数,因此您正在寻找类似以下的代码:

person = Person.get_or_insert('Peter')
# other interesting & useful code here...
# later, maybe we need to retrieve that key name from the object:
name = person.key().name()
assert(name == "Peter")