Как очистить свойства ndb
в моем приложении мне нужно удалить несколько свойств моих моделей.
я проверил эту ссылку, но первая проблема заключается в том, что свойства находятся на polymodel
, и нет способа переключиться на expando
на время, чтобы удалить свойства, im даже не очистить, что может произойти, если я изменил a polymodel
на expando
.
так как я могу удалить свойства из существующих объектов?
Я думал установить все StringProperty
в None
, а затем удалить их из схемы модели и перераспределить.
одно из этих свойств - BooleanProperty
, я не могу установить этот символ None
вправо?!
или ndb.PickleProperty
... как я должен удалить это?
Кто-нибудь знает, как это сделать правильно?
Ответы
Ответ 1
Если вы хотите обновить все свои сущности, рекомендуемый подход - это работа с картой/уменьшением, которая считывает и переписывает все объекты; однако это может не стоить того, в зависимости от того, сколько данных у вас есть - карта/сокращение не является бесплатным.
Также убедитесь, что вы тестируете работу по карте/сокращению на небольшом подмножестве данных. Это удивительно тонко, чтобы действительно удалить свойство из объекта, даже если оно уже не в классе модели! Наилучший подход может быть:
if 'propname' in ent._properties:
del ent._properties['propname']
ent.put()