更改模型的key_Name + App Engine

时间:2012-07-03 09:38:05

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

我打算为我的应用程序执行此操作:

  1. 将唯一ID存储到用户模型的key_name中。
  2. 在任何时候,用户都可以选择一次用户名,我打算用用户选择的用户名替换模型的原始key_name。
  3. 通过我的实施,任何新用户,只有在激活用户时才会创建用户模型。
  4. 根据情况,我的问题,以下哪一种更好的方法?

    1. 用户登录后,用户必须选择用户名,以便我可以选择keyname = username来创建用户模型。但是,这种方法可能会让用户感到不愉快,因为他们应该被允许随时选择用户名。
    2. 上述情况解释了这种方法,但我需要做clone_entity。但是,使用clone_entity,是否会将引用属性分配回新的克隆实体?而且,性能是优先考虑的,如果它同时涉及很多用户,这在数据库操作方面是否会很昂贵?

1 个答案:

答案 0 :(得分:0)

如果您对使用user_name作为密钥感到满意,那么任何一种方法都可以正常工作(假设您有防止重复用户名的逻辑)

  

但是,使用clone_entity,是否会将引用属性分配回新的克隆实体?

如果正确完成克隆实体,将复制引用属性而不会出现问题。但是,如果您有任何实体引用您正在克隆的实体,则不会更新这些实体以引用该实体的新克隆。

  

此外,性能优先,如果同时涉及大量用户,这在数据库操作方面是否会成本高昂?

只要克隆有效实施并假设您传入要克隆的实体,每个克隆调用应该只有一个数据库操作(新创建的实体的放置)。

看起来你链接的clone_entity有一个更新,它将避免对引用属性进行过多的db调用,所以你应该很好。