从数据存储区获取后,在appengine中设置app引擎模型的计算属性的最佳方法是什么?

big*_*ind 0 google-app-engine model

我在app引擎中拥有自己的User模型,该模型应具有其gravatar url的属性.但是,由于可以使用他的电子邮件地址快速计算,因此存储它没有意义.有没有办法在从数据存储区加载时自动初始化此属性?

我可以添加一个名为get_avatar_url()的方法,但是你不能在jinja2模板中调用对象的方法(据我所知),并且我不想将所有这些值单独发布到模板中.

Nic*_*son 5

您可以按照描述定义方法,也可以定义属性,如下所示:

class MyModel(db.Model):
  email = db.StringProperty(required=True)

  @property
  def avatar_url(self):
    return "http://gravatar.com/avatar/%s" % (hashlib.md5(self.email).hexdigest(),)
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其称为instance.avatar_url(或在模板中{{instance.avatar_url}}).

要么在jinja2模板中都可以正常工作,但是如果你需要在其他地方请求它,那么使用属性会稍微整齐一些.由于只有数据存储区属性实例导致在数据存储区中存储数据,因此您的属性不会存储在数据存储区中.