GAE - 无法从密钥中删除实体

时间:2017-02-22 21:11:30

标签: python django google-app-engine

我无法使用python / ndb从GAE中的键中删除实体。我能够从页面中检索实体(问题)密钥,但无法弄清楚如何将其删除。 GAE支持页面说它就像检索密钥然后删除密钥一样简单,如下所示。

problem = problem_key.get()
problem.key.delete()

但这不起作用。我非常确定正确获得密钥。 HTML看起来像

{%for problem in problems %}
    <tr>
        <td>{{ problem.tags }}</td>
        <td><script type="math/tex">{{ problem.content }}</script></td>
        <td>{{ problem.answer }}</td>
        <td>{{ problem.quiz }}</td>
        <td>{{ problem.id }}</td>
        <td>{{ problem.date }}</td>
        <form action="/deleteProblem" method="POST">
            <td><button type="submit" name="problem_key" value="{{ problem.key }}">Delete Problem</button></td> 
        </form>
    </tr>
{% endfor %}    

我的python代码如下:

class deleteHandler(BaseHandler):
    def post(self):
        prob_key = self.request.get('problem_key')
        problem = prob_key.get()
        problem.key.delete()
        self.redirect("/")

我得到了:

problem = prob_key.get()     
AttributeError: 'unicode' object has no attribute 'get'

我最好的猜测是,prob_key被分配了实际的unicode,因此当然没有get()方法,但我不明白如何根据Google的问题解决问题解释它应该如何运作。

编辑:好的,一直在侦察一下,我已经改变了这一行:

prob_key = self.request.get('problem_key')

prob_key = ndb.Key('Problem', int(self.request.get('problem_id')

因为据我所知,可以按以下方式构建密钥

ndb.Key('kind', 'id')

不幸的是,我仍然无法让它发挥作用。我现在正在

   problem.key.delete()
AttributeError: NoneType has no attribute 'key'

0 个答案:

没有答案