Ну, вы не "правильно строите" ключ.Ключ должен быть построен с использованием вида объекта и его идентификатора / имени (если вы его знаете).From Указание собственного имени ключа :
account.key = ndb.Key('Account', 'sandy@example.com')
# You can also use the model class object itself, rather than its name,
# to specify the entity's kind:
account.key = ndb.Key(Account, 'sandy@example.com')
Но в этом примере предполагается, что 'sandy@example.com'
было указано как идентификатор / имя ключа при создании объекта.
Представляемая вами сущность имеет вид Account
(или, по крайней мере, это то, к чему вы обращались), а не id
.Таким образом, вы должны создать свой ключ, как в приведенном примере (вид их сущности также был назван Account
).
Также не похоже, что для вашей сущности использовались указанные идентификаторы сущности:
Если так, то nid
на самом деле ваш идентификатор ключатак что вы будете строить свой ключ следующим образом:
ndb.Key(Account, nid)
Вы также можете использовать:
ndb.Key(urlsafe=id)
Но если у вас действительно есть сущность, например, из результатов запроса,вам больше не нужно создавать его ключ для выполнения удаления, вы можете получить ключ непосредственно у сущности и удалить его следующим образом:
for entity in ndb.query(...).fetch(...):
entity.key.delete()
Если у вас есть несколько сущностей для удаления, его более эффективно использовать ndb.delete_multi()
, см. Массовое удаление объектов .