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();