Неявное преобразование 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})
Другие вопросы по тегам