J'ai un modèle d'entité NDB de relation un-à-plusieurs par rapport à des modèles de commentaire et de commentaire. J'essaie de supprimer le commentaire de la liste des commentaires après avoir supprimé l'entité de commentaire de DB. Voici mon code pour la suppression de commentaire:Pourquoi ValueError lors de la suppression d'un type KeyProperty dans une relation un-à-plusieurs. Comment le réparer?
idx = post.comments.index(ndb.Key('Comment',comment_id))
post.comments.pop(pos) # Remove comment from comments list
Je reçois l'erreur comme:
ValueError: Key('Comment', '6614661952700416') is not in list
Mais Datastore Viewer je peux voir le commentaire il y a:
[datastore_types.Key.from_path(u'Comment', 6614661952700416L, _app=u'dev~testData2')]
modèle 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)
H Sur un similar question il semble fonctionner.
Essayez de convertir la ID à un int 'idx = post.comments.index (ndb.Key ('Comment', int (comment_id))). Le message d'erreur suggère qu'il est interprété comme une chaîne. En outre, le '_app 'facultatif affiché dans la visionneuse est plutôt inhabituel. Comment le commentaire a-t-il été créé? Est-ce que '' dev ~ testData2 '' correspond à votre application? –
qui a résolu le problème. Merci – ravi