谷歌应用引擎NDB自定义密钥id

2024-04-19 17:36:02 发布

您现在位置:Python中文网/ 问答频道 /正文

当我用ndb的方法put创建一个对象时,它会自动创建类型为key(kind,id)的key,其中id是一个数字。在所有的文档中,它都显示您可以使用一个字符串作为密钥的id,但是我无法找到在创建对象时如何自动执行此操作。

我有一个用户模型,我想使用用户的用户名(因为它是唯一的)作为密钥的id,以便更快地检索。这是个好主意吗?自从用户名被用户提交(我正在验证输入)后,我是否会对它有任何问题?


Tags: 对象方法key字符串用户文档id类型
3条回答
class UserModel(ndb.Model):
  ...

user_model_entity = UserModel(id='some_string', ...)

如果这些ID可能会更改,这可能是个坏主意。如果它是您自己的系统,并且您可以对潜在的更改做出反应,这是一个好主意,但是您需要确保id在决定使用它们之前是唯一的和相对稳定的。

还可以为模型实体提供整数ID(不一定是字符串)。

class User(ndb.Model):
...

user = User(id=1234567890, ...)
user.put()

在创建时指定实体的id。定义模型时,不在其中设置id属性。因此,例如:

class User(ndb.Model):
    # fields here

创建模型时,您有:

user = User(id='username', ...)

因为用户名是唯一的,并且您验证了您的输入,所以您使用这种方法不会有任何问题。

有关ndb Model构造函数的更多信息,可以查看NDB Model Class - Constructor

希望这有帮助。

相关问题 更多 >