【发布时间】:2012-11-29 18:02:23
【问题描述】:
大家好,我想弄清楚如何为以下案例构建我的查询
首先我定义了一个模型
class Variant(ndb.Expando):
test = ndb.StringProperty()
class Item(ndb.Model):
test2 = ndb.StringProperty()
variants = ndb.StructuredProperty(Variant, repeated=True)
variant = Variant(test="test", dynamic="a")
item = Item(test2="test", variants=[variant, ])
item.put()
然后是查询的东西..到目前为止我已经尝试过
dynamic = "dynamic"
Item.query(ndb.GenericProperty("variants.%s" % dynamic) == "a")
Item.query(Item._properties["variants.%s" % dynamic] == "a")
Item.query(getattr(Item.variants, dynamic) == "a")
Item.query(getattr(Item, "variants.%s" % dynamic) == "a")
Item.query(ndb.query.FilterNode("variants.%s" % dynamic, "=", "a"))
generic_prop = ndb.GenericProperty()
generic_prop._name = "variants.%s" % dynamic
Item.query(generic_prop == "a")
这些都不起作用..这应该是完全可能的,因为数据存储区中的属性名称是
variants.dynamic = ["a", ]
感谢您的帮助
【问题讨论】:
-
你试过
Item.query(ndb.GenericProperty('variants.dynamic') == 'a')吗? -
尝试实例化
ndb.GenericProperty('variants.dynamic')会导致ValueError: Name 'variants.dynamic' cannot contain period characters从ndb/model.py第765 行。看来这应该是一个功能请求。
标签: google-app-engine python-2.7 app-engine-ndb