Неявное преобразование dict в ndb.Model в Python Google App Engine
Я столкнулся с этой функцией (?), Где словари неявно преобразуются в объекты 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 ответ
Решение
Это было для меня неожиданностью, и я давно использую NDB! Но из кода, похоже, это было задумано: https://github.com/GoogleCloudPlatform/datastore-ndb-python/blob/caac0c3e7dd4d9b2c6b32dfc5d59386dd02e6b57/ndb/model.py
Это будет лишь небольшое изменение в вашем коде, чтобы не полагаться на поведение, хотя:
user.dob = DateOfBirth(**{"day": 12, "month": 10, "year": 1983})