Как правильно удалить свойства ndb

В моем приложении мне нужно удалить несколько свойств моих моделей.
я проверил эту ссылку, но первая проблема заключается в том, что свойства находятся на polymodel и нет никакого способа, которым я собираюсь переключиться на expando на время, чтобы удалить свойства, я даже не уверен, что может произойти, если я изменю polymodel для expando,

так как мне удалить свойства из существующих объектов?

я думал, чтобы установить все StringProperty в None а затем удалите их из схемы модели и повторно разверните. одно из этих свойств BooleanPropertyЯ не могу установить этот None право?! или ndb.PickleProperty... как мне это убрать?

Кто-нибудь знает, как сделать это правильно?

1 ответ

Решение

Если вы хотите обновить все ваши сущности, рекомендуемый подход - это задание карты / сокращения, которое читает и перезаписывает все сущности; однако, это может не стоить того, в зависимости от того, сколько у вас данных - карта / уменьшение тоже не бесплатна.

Также убедитесь, что вы тестируете карту / сокращаете работу на небольшом подмножестве данных. Удивительно тонко действительно удалить свойство из сущности, даже если его больше нет в классе модели! Лучший подход может быть:

if 'propname' in ent._properties:
  del ent._properties['propname']
  ent.put()
Другие вопросы по тегам