Python Google App Engine中对ndb.Model转换的隐式字典

时间:2016-11-19 06:54:52

标签: python google-app-engine google-cloud-datastore app-engine-ndb dev-appserver-2

我遇到了这个功能(?),其中字典被隐式转换为ndb.Model对象

我有以下ndb.Model类

class DateOfBirth(ndb.Model)
  day = ndb.IntegerProperty()
  month = ndb.IntegerProperty()
  year = ndb.IntegerProperty()

class User(ndb.Model):
   dob = ndb.StructuredProperty(DateofBirth)

在一个地方,当我不小心通过了一个字典

user.dob = {"day": 12, "month": 10, "year": 1983}

它没有抱怨,看起来有效。

这是预期的,还是我预计会在以后遇到问题(因为这种行为没有记录,预计会随时中断)

1 个答案:

答案 0 :(得分:2)

对我来说这是一个惊喜,我已经使用NDB很长一段时间了!但是从代码中可以看出:https://github.com/GoogleCloudPlatform/datastore-ndb-python/blob/caac0c3e7dd4d9b2c6b32dfc5d59386dd02e6b57/ndb/model.py#L2354

虽然代码只是对代码的一个小改动,但不必依赖于行为:

user.dob = DateOfBirth(**{"day": 12, "month": 10, "year": 1983})