Это не точный ответ, и мы уже знаем, что Google работает для NDB Library, я не мог дождаться этого.
Что я пытался написать NDB Properties, не указанную в datastore_v1_pb2.py
, например GeoPt
.
class GCDFoo(ndb.Model):
latlng = ndb.GeoPtProperty()
В этом случае, если мы читаем объект по API низкого уровня GCD, возвращается, как показано ниже.
name: "latlng"
value {
entity_value {
property {
name: "x"
value {
double_value: 10.0
indexed: false
}
}
property {
name: "y"
value {
double_value: 10.0
indexed: false
}
}
}
meaning: 9
}
hm, Я действительно не знаю, что означает «значение», но было важно описать GeoPt. и теперь мы можем написать свойство GeoPt что-то вроде этого.
def make_geopt_value(lat,lng):
entity = datastore.Entity()
prop = entity.property.add()
datastore.helper.set_property(prop,'x',lng,indexed=False)
prop = entity.property.add()
datastore.helper.set_property(prop,'y',lat,indexed=False)
value = datastore.Value()
datastore.helper.set_value(value,entity)
value.meaning = 9
return value
Это сработало для меня, но пока не знаю, правильно ли он подходит. В любом случае, я надеюсь, что мой ответ будет полезен для тех, кто не может ждать Библиотеку NDB.
Не ОРМ, но это может быть полезно: https://github.com/transceptor-technology/dbWrapper –
https://github.com/lucemia/google-cloud-datastore-orm ОРМ подход – lucemia