从谷歌应用引擎中的类变量设置键

时间:2011-09-16 13:31:13

标签: google-app-engine google-cloud-datastore

我有这门课,我想用手机作为钥匙。关键是表单输入 task.phone = self.request.get('phone')。我搜索了答案,但我发现的唯一答案来自代码内部(如task =(phone = 5555))。

class task(db.Model):
    name = db.StringProperty()
    lanme = db.StringProperty()
    phone = db.StringProperty()
    adress = db.StringProperty()
    visits = db.IntegerProperty()

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是:

task = task(key_name=adress)

更高级的是:

class task(db.Model):
    ...
    def __init__(self, *args, **kwargs):
        kwargs['key_name'] = kwargs['adress']
        db.Model.__init__(self, *args, **kwargs)

但是你需要记住的是,appengine不使用特定的字段作为密钥,总会有一个密钥,可能与特定字段匹配也可能不匹配。如果它们是相同的,那就是“巧合”。作为一般建议,保持密钥不变。您可能没有考虑一些问题,例如密钥的唯一性和覆盖它们。

一些旁注:

  1. 班级名称应为“任务而非任务”
  2. 地址不是地址