Подтвердить что ты не робот

Как очистить свойства ndb

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

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

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

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

4b9b3361

Ответ 1

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

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

if 'propname' in ent._properties:
  del ent._properties['propname']
  ent.put()