В настоящее время у меня есть модель в NDB, и я хотел бы добавить к ней новое свойство.Допустим, у меня есть следующее:
class User(Model, BaseModel):
name = ndb.StringProperty(required=False)
email = ndb.StringProperty(required=False)
@property
def user_roles(self):
return UserRole.query(ancestor=self.key).fetch()
@property
def roles(self):
return [user_role.role for user_role in UserRole.query(ancestor=self.key).fetch()]
Теперь, скажем, я добавил еще один property
, называемый market_id
.Например,
class User(Model, BaseModel):
name = ndb.StringProperty(required=False)
email = ndb.StringProperty(required=False)
@property
def user_roles(self):
return UserRole.query(ancestor=self.key).fetch()
@property
def roles(self):
return [user_role.role for user_role in UserRole.query(ancestor=self.key).fetch()]
@property
def market_id(self):
""" fetches `id` for the resource `market` associated with `user` """
for each_role in UserRole.query(ancestor=self.key):
resource = each_role.role.get().resource
if resource.kind() == 'Market':
return resource.id()
return None
Проблема здесь в том, что roles
правильно выбраны, как и ожидалось, для всех существующих объектов (так как это свойство было там с самого начала, а также, дополнительный столбец можно наблюдать вхранилище данных называется roles
).
Поскольку я имею дело со свойством класса Python, я предполагаю, что миграция не требуется.Но как столбец с именем roles
уже существует?А почему недавно добавленное свойство с именем market_id
не имеет?Требуется ли миграция?