0

我的模型与Python GAE(问候与作者)文档中的例子类似。我在删除时遇到问题,因为它始终是最后一个被删除的孩子,而不是我所针对的实体。删除NDB中的实体最后一个孩子总是被删除

class Delete(webapp2.RequestHandler): 
    def post(self): 
     greeting_key = ndb.Key(urlsafe=self.request.get('for_deletion')) #it's the key's urlsafe that is being passed here 
     greeting_key.delete() 
     self.redirect('/events') 

这里是什么产生请求的代码片段:

   self.response.write('''<br><br><form action="/delete" method="post">   
        <input type="hidden" name="for_deletion" value="%s"> 
        <input type="submit" value="Delete Most Recent Info"><br><br> 
       <form> 
       ''' % post.key.urlsafe()) 
+0

没有得到一看你'for_deletion' PARAM内容是什么,这将是我们很难调试。 生成此请求的代码是什么样的? – Josh

+0

@Josh它实际上是一个隐藏的输入。值是key.urlsafe。我可以向你展示整个代码。 –

+1

我做了进一步的调试,并且得出结论,ndb delete函数没有问题,但是在生成请求的html页面中,self.request.get('for_deletion')返回值。我会尽快更新。 –

回答

1

问题的事实,我有很多与NAME =“for_deletion”隐藏的输入arised。服务器脚本在队列中选择最后一个,这就是为什么我要删除最后一个孩子。

我已经修改了生成请求的html页面,因为我使用javascript来询问用户他/她是否要删除数据,然后我将继续发送一个隐藏的输入名为“ for_deletion”。这样我将确保只有一个html元素名称=“for_deletion”。

这里是js文件的代码片段:

  document.body.innerHTML += '<form id="dynForm" action="/delete" method="post"><input type="hidden" name="for_deletion" value=' + urlsafe + '></form>'; 
     document.getElementById("dynForm").submit();