У меня возникли проблемы с удалением сущностей из ключей в GAE с использованием 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 %}
И мой питон код выглядит следующим образом:
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 становится назначен фактический юникода и поэтому, конечно, нет метода get()
, но я не понимаю, как исправить проблему на основе объяснения Google того, как она должна функционировать.
EDIT: Хорошо, был скаутинг вокруг некоторое время, и я изменил эту строку:
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'
Вы не передали фактический объект Key. Создайте объект Key из переданной строки и затем удалите операцию. –
И как только у вас есть ключевой объект, вам не нужно получать фактический экземпляр модели; просто вызовите delete непосредственно на ключ. –
@ AvinashRaj Я попытался получить его, не смог заставить его работать. Я добавил, что я попытался редактировать – quest2graduate18