Как вернуть любую из последних моделей, добавленных в хранилище данных? - PullRequest
2 голосов
/ 02 сентября 2011

Как я могу изменить это

 videos = Video.gql( 'WHERE user_id = :1', '18' ).fetch(8)

чтобы вместо сопоставления для user_id он возвращал любой из последних 8 объектов Video, добавленных в хранилище данных?

Ответы [ 3 ]

2 голосов
/ 02 сентября 2011

Другим обходным решением было бы иметь свойство, в котором хранится дата создания, это позволит вам запрашивать несколько различных запросов, включая последние созданные.

Пример

class Video(db.Model):
    ...
    user_id = ...
    date_created = db.DateTimeProperty(auto_now_add=True)
    ...

извлечение последним8 дополнений:

Video.all().order("-date_created").fetch(8)

Кроме того, вы можете выполнять более интересные запросы по диапазону дат и т. Д.

Надеюсь, это тоже поможет!

1 голос
/ 03 сентября 2011

Вы должны сохранить свои модели с

created = db.DateTimeProperty(auto_now_add=True)

для запросов этого типа.

Принятый ответ на этот вопрос не верен.Если вы добавите свойство created к своим моделям и сравните запросы, упорядоченные по -created и -__key__, вы увидите, что они не совпадают.

Ключи, которые устанавливаются автоматически, не будут монотонно увеличиваться.Немного хорошего прочтения об этом здесь .

1 голос
/ 02 сентября 2011

Попробуйте:

Video.gql('ORDER BY __key__ DESC').fetch(8)

На самом деле, вам вообще не нужно использовать GQL для этого:

Video.all().order('-__key__').fetch(8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...