appengine KindError при доступе к таблице за пределами django

У меня есть таблица с именем Mytable в home/models.py, и я использую django aep. Я ссылаюсь на Mytable.all().

Он отображается в средстве просмотра данных как home_mytable

Теперь для некоторых URL в app.yaml у меня есть отдельный обработчик, который обрабатывает эти запросы. (Это на самом деле обработчик Google Wave робота).

В этом обработчике я хочу сослаться на таблицу home_mytable. Я делаю это, вызывая db.GqlQuery("SELECT * from home_mytable")

Однако происходит нечто странное. Я получаю KindError Нет реализации для вида home_mytable

Я получаю это время от времени, хотя иногда это работает просто отлично, я подозреваю, что это происходит сразу после того, как я вызываю URL, который ссылается на эту таблицу из обработчика django.

Мои вопросы: как я могу: а) убедиться, что эта ошибка не возникает, и б) программно проверить, какие есть "виды", чтобы я мог попытаться отладить эту ошибку?

1 ответ

Решение

App Engine Patch позволяет вашим моделям иметь разные имена. Не спрашивай меня почему, но это то, что он делает. Чтобы исправить ситуацию, вам необходимо переопределить метод класса kind() в ваших моделях, чтобы убедиться, что у них всегда есть "фиксированные" имена вида, например:

class MyTable(db.Model):
  @classmethod
  def kind(cls):
    return "home_mytable"
Другие вопросы по тегам