我怎麼能修改此如何返回添加到數據存儲的最後幾個模型?
videos = Video.gql('WHERE user_id = :1', '18').fetch(8)
,這樣反而對USER_ID匹配的,則返回任何過去的8個Video對象添加到數據存儲?
我怎麼能修改此如何返回添加到數據存儲的最後幾個模型?
videos = Video.gql('WHERE user_id = :1', '18').fetch(8)
,這樣反而對USER_ID匹配的,則返回任何過去的8個Video對象添加到數據存儲?
你應該用
created = db.DateTimeProperty(auto_now_add=True)
保存你的模型對於這種類型的查詢。
在這個問題上接受的答案是不正確的。如果您將created
屬性添加到模型中,並比較-created
和-__key__
訂購的查詢,您將看到它們不匹配。
自動設置的鍵不會單調遞增。一些很好的閱讀here。
試試這個:
Video.gql('ORDER BY __key__ DESC').fetch(8)
其實,你並不需要使用GQL
在所有這樣的:
Video.all().order('-__key__').fetch(8)
這很完美。 '-__ key__'是什麼意思? – zakdances
''-__ key __''表示鍵的降序(因此是'-')。如果您未指定自定義密鑰,則每個實體都將獲得大於先前密鑰的密鑰ID。密鑰ID是64位無符號整數(好,「長」)。你可以在任何像這樣的實體上獲得它:'Video.all()。get().key().id()'。 –
另一種解決方法是將具有存儲創建日期屬性,這將允許您查詢包括上次創建的一堆不同的查詢。
例
class Video(db.Model):
...
user_id = ...
date_created = db.DateTimeProperty(auto_now_add=True)
...
找回過去的8個補充:
Video.all().order("-date_created").fetch(8)
除此之外,您可以按日期範圍做更有意思的查詢等。
希望這也有幫助!
密鑰ID分配與「在多個數據中心之間」分割實體完全無關。 –
我認爲「通過多個數據中心」並不是我想說的。我將編輯該部分。感謝您指出了這一點。 –