【问题标题】:App Engine ndb StructuredProperty __get__App Engine ndb StructuredProperty __get__
【发布时间】:2013-04-02 01:52:08
【问题描述】:

好吧,我卡住了。我在实体上有一个简单的StructuredProperty(只有一层深)属性。在运行时,我想按名称获取 StructuredProperty 上的“子属性”之一的值。例如;

class Address(ndb.Model):
  street = ndb.StringProperty()
  # ...

class Person(ndb.Model):
  # ...
  address = ndb.StructuredProperty(Address)

然后在运行时我希望能够执行以下操作:

prop = entity._properties['address']
sub_prop = prop.__getattr__('street')
value = sub_prop.__get__(entity, Person)

或使用GenericProperty 或任何最有效的方法来解决它。但是我已经尝试了许多变体,但我显然遗漏了一些东西。当然,我想这样做的原因是确实有许多名为Address-like StructuredProperty 的名称,我根据运行时上下文知道我想要哪一个。

感谢您的帮助。

【问题讨论】:

  • getattr(prop, 'some_name') 有什么问题?我遇到了这个问题。
  • 你是对的,鲍比。我正往后看。不得不离开电脑然后回来。

标签: google-app-engine app-engine-ndb


【解决方案1】:

鲍比是对的。我得到的是房产,而不是我想的房产价值(漫长的一天)。

简单的答案是

getattr(prop, 'some_name')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多