1

Я столкнулся с этой функцией (?), Где словари неявно преобразуются в ndb.Model объектынеявной ДИКТ для преобразования ndb.Model в Python Google App Engine

Я следующий класс 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}

он не жаловался, и похоже, это сработало.

ли это ожидалось, или я ожидал столкнуться с вопросами позже (как это поведение не документировано и, как ожидается, перерыв в любое время)

ответ

2

Это был сюрприз для меня, и я использую ОПРС для много времени! Но из кода, кажется, он был предназначен: https://github.com/GoogleCloudPlatform/datastore-ndb-python/blob/caac0c3e7dd4d9b2c6b32dfc5d59386dd02e6b57/ndb/model.py#L2354

Было бы только небольшие изменения в код, чтобы не полагаться на поведение, хотя:

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

ничего себе я не знаю, что это ! – marcadian

+1

Это предназначено. Фактически, распаковка dict (или вызов, заполняемый dict) - это простой способ продолжить создание сущностей. – janscas

 Смежные вопросы

  • Нет связанных вопросов^_^