0

У меня есть идентификатор ключа объекта, который я хочу удалить, но при попытке удалить с помощью get_by_id он не удаляет объект (он ничего не делает).Удалить объект ndb с помощью key.id()

Числовой идентификатор (я взять на себя ряд, а не строка) хранится в «ключ» получить данные:

d = car_database.Car() 
ident = self.request.get('key') 
d.get_by_id(ident).delete() 

Идентификатор в этом случае составляет: 5659313586569216

Благодарность за help

ответ

0

Это неверное описание. Посмотрите документацию по удалению объектов - https://cloud.google.com/appengine/docs/python/ndb/entities#deleting_entities - это довольно ясно, что вы должны делать.

В вашем случае вы должны быть

ident = self.request.get('key') 
d = car_database.Car.get_by_id(ident) 
if d: 
    d.key.delete() 

Обратите внимание, что get_by_id является фактически classmethod так что вам не нужно, чтобы создать экземпляр в экземпляр Car, чтобы использовать его.

И delete - это метод Key, а не Model.

+1

Использовать 'long (ident)' для получения числового значения ключа –

+0

@brent washburne хорошая точка, если они не являются числовыми строками ;-) –