GAE“用户”类型取代了自己的“用户”类型?

时间:2012-07-13 08:22:10

标签: python google-app-engine

我的GAE Python应用程序有一种称为“用户”的应用程序,具有各种自定义字段。最近,当我的应用程序一夜之间没有活动时,我会在第二天早上尝试登录时收到错误。

在登录期间,我获得了一个id(来自Facebook),它是数据存储区中实体的key_name:

    user = User.get_by_key_name(id_from_facebook)
    logging.debug(user.favorite_color)

这会导致错误,因为返回的实体实际上是来自Google库的某个类,因此没有字段“favorite_color”。但是,它从数据存储区获得“某些东西”,所以我检查了对象的内容:

    for key in user.__dict__.keys():
      log.debug("%s: %s" % (key, user.__dict__[key]))

这显示的键不在我的“用户”类型中,例如“_first_name”,“_ last_name”和“_email”。

我也尝试从方法中的“myapp.models”导入我的类,而不是在文件的顶部,但没有任何改变。一旦我关闭在GAE上运行的实例并再次访问我的应用程序以启动新实例,它就可以正常工作。

我唯一的线索是,我听说我的应用程序导入的内容和GAE导入的内容之间存在差异,但没有别的。除了将我的所有用户复制到一个新的独特类型(如“MyUser”)之外,我还能做些什么吗?

编辑:

我发现不受欢迎的课程实际上来自Kay Framework的“用户”,这也是我的项目。但是,我不会在我的代码中的任何位置导入该类,尤其是在发生错误的模块中。

1 个答案:

答案 0 :(得分:0)

您可能正在从User导入google.appengine.api.users课程。

幸运的是,Python使得这类事情很容易被追踪,因为导入是明确的。只需检查模块顶部的导入行,并确定该对象的来源。