GqlQuery и ID

Я пытаюсь создать GqlQuery и получить объект по указанному идентификатору, но получаю сообщение об ошибке «IndexError: запрос вернул менее 1 результата». DataStore не пуст. В Datastore Viewer я нашел необходимый идентификатор. Мой код размещен ниже:

из google.appengine.ext импортировать базу данных из models.models импортировать новости

news = News.gql ("ГДЕ id = 4265")

распечатать новости [0] .title


Я знаю про метод get_by_id, меня он по каким-то причинам не устраивает. Но английский для меня не родной, из-за этого я не понимал, как правильно использовать Key.from_path.


person starter    schedule 17.05.2011    source источник
comment
Я мало что пытался сделать по-другому. Но я все равно получаю ту же ошибку. Ниже мой новый код: k = db.Key.from_path ('News', 4264) news = db.GqlQuery (SELECT * FROM News WHERE key =: 1, k) news [0] .title   -  person starter    schedule 18.05.2011
comment
У вас есть несколько довольно простых ошибок, вам, вероятно, следует ознакомиться с GQL и различные удобные методы в модели   -  person Chris Farmiloe    schedule 18.05.2011


Ответы (2)


Пытаться:

news = News.get_by_id(4265)
if news is not None: 
  print news.title

Или, если вам необходимо использовать GQL,

news = News.get(db.Key.from_path('News', 4265))
...
person hyperslug    schedule 18.05.2011

Зачем вам писать запрос Gql, если вы можете просто использовать get_by_id () класса модели.

примечание: id можно получить из объекта с помощью object.Key (). id () внутри python, а в шаблонах вы просто вызываете object.key.id

news = News.get_by_id(4265)

или вы можете использовать db.Key.from_path, чтобы получить ключ и передайте его методу get ().

new = News.get(db.Key.from_path('News', 4265))

person Abdul Kader    schedule 18.05.2011