ちょっとした魔法でこれを行うことができます。
短い答え:
variants_dynamic_property = ndb.GenericProperty()
variants_dynamic_property._name = 'variants.dynamic'
q = Item.query(variants_dynamic_property == 'a')
長い答え:
をクエリしているため、ドキュメントの状態GenericProperty
として作成する必要があります。たとえば、次のようになります。
FlexEmployee.query(ndb.GenericProperty('location') == 'SF')
同様に、 をクエリする場合StucturedProperty
、ドキュメントにはプロパティのプロパティを使用できると記載されています。
Contact.query(Contact.address.city == 'Amsterdam')
したがって、これらを組み合わせると、必要になります
Item.query(ndb.GenericProperty('variants.dynamic') == 'a')
ただし、プロパティを介して構築しようとするとndb.GenericProperty('variants.dynamic')
、次の例外が発生します。
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/ndb/utils.py", line 136, in positional_wrapper
return wrapped(*args, **kwds)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/ndb/model.py", line 2366, in __init__
super(GenericProperty, self).__init__(name=name, **kwds)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/ndb/utils.py", line 136, in positional_wrapper
return wrapped(*args, **kwds)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/ndb/model.py", line 765, in __init__
raise ValueError('Name %r cannot contain period characters' % (name,))
ValueError: Name 'variants.dynamic' cannot contain period characters
ただし、プロパティ名を指定せずにコンストラクターを使用し、事後に名前を設定することで、これを回避できます。
variants_dynamic_property = ndb.GenericProperty()
variants_dynamic_property._name = 'variants.dynamic'