【问题标题】:Delete ndb entity using the key.id()使用 key.id() 删除 ndb 实体
【发布时间】:2016-01-17 01:52:29
【问题描述】:

我有要删除的实体的密钥 ID,但是当尝试使用 get_by_id 删除时,它并没有删除实体(它没有做任何事情)。

数字 id(我假设它是一个数字,而不是字符串)存储在 'key' 获取数据中:

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

本例中的id为:5659313586569216

感谢您的帮助

【问题讨论】:

    标签: google-app-engine google-cloud-datastore app-engine-ndb


    【解决方案1】:

    这是不正确的。请查看有关删除实体的文档 - 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 实际上是一个类方法,因此您无需实例化 Car 的实例即可使用它。

    deleteKey 的方法,而不是Model 的方法。

    【讨论】:

    • 使用long(ident)获取key的数值
    • @brent Washburne 好点,除非他们的 id 是数字字符串 ;-)
    猜你喜欢
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多