为什么在删除一对多关系的 KeyProperty 类型时出现 ValueError。如何解决?
Why ValueError when deleting a KeyProperty type to one-to-many relationship. How to fix it?
我有一对多关系 NDB 实体模型 b/w post 和评论模型。从数据库中删除评论实体后,我试图从评论列表中删除评论。下面是我删除评论的代码:
idx = post.comments.index(ndb.Key('Comment',comment_id))
post.comments.pop(pos) # Remove comment from comments list
我收到如下错误:
ValueError: Key('Comment', '6614661952700416') is not in list
但在 Datastore Viewer 上我可以看到评论:
[datastore_types.Key.from_path(u'Comment', 6614661952700416L, _app=u'dev~testData2')]
Post 型号:
class Post(ndb.Model):
title = ndb.StringProperty(required=True)
body = ndb.TextProperty(required=True)
created = ndb.DateTimeProperty(auto_now_add=True)
updated = ndb.DateTimeProperty(auto_now=True)
author_id = ndb.KeyProperty(kind=User)
comments = ndb.KeyProperty(kind=Comment, repeated=True)
这里 similar question 它似乎在工作。
正在将评论转换为答案。
错误消息表明 comment_id
被解释为字符串,而不是 long/int(强调我的):
ValueError: Key('Comment', '6614661952700416') is not in list
虽然数据存储条目对应于一个长密钥 ID:
[datastore_types.Key.from_path(u'Comment', 6614661952700416L, _app=u'dev~testData2')]
所以只需明确地将 comment_id
转换为一个数字:
idx = post.comments.index(ndb.Key('Comment', int(comment_id)))
我有一对多关系 NDB 实体模型 b/w post 和评论模型。从数据库中删除评论实体后,我试图从评论列表中删除评论。下面是我删除评论的代码:
idx = post.comments.index(ndb.Key('Comment',comment_id))
post.comments.pop(pos) # Remove comment from comments list
我收到如下错误:
ValueError: Key('Comment', '6614661952700416') is not in list
但在 Datastore Viewer 上我可以看到评论:
[datastore_types.Key.from_path(u'Comment', 6614661952700416L, _app=u'dev~testData2')]
Post 型号:
class Post(ndb.Model):
title = ndb.StringProperty(required=True)
body = ndb.TextProperty(required=True)
created = ndb.DateTimeProperty(auto_now_add=True)
updated = ndb.DateTimeProperty(auto_now=True)
author_id = ndb.KeyProperty(kind=User)
comments = ndb.KeyProperty(kind=Comment, repeated=True)
这里 similar question 它似乎在工作。
正在将评论转换为答案。
错误消息表明 comment_id
被解释为字符串,而不是 long/int(强调我的):
ValueError: Key('Comment', '6614661952700416') is not in list
虽然数据存储条目对应于一个长密钥 ID:
[datastore_types.Key.from_path(u'Comment', 6614661952700416L, _app=u'dev~testData2')]
所以只需明确地将 comment_id
转换为一个数字:
idx = post.comments.index(ndb.Key('Comment', int(comment_id)))