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

Implicit dict to ndb.Model conversion in Python Google App Engine

我运行进入这个功能(?)其中字典被隐式转换为ndb.Model对象

我关注ndb.Modelclass

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}

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

这是预期的,还是我希望稍后 运行 解决问题(因为没有记录这种行为并且预计随时会中断)

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

尽管对您的代码进行了一个小改动,但不必依赖该行为:

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