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})
我运行进入这个功能(?)其中字典被隐式转换为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})