2010-11-12 57 views
0

我試圖使用auto_now=Trueauto_now_add=True按年齡對數據存儲中的項目進行排序。我設法解決了datetime問題,但我無法按年齡正確排序。我很欣賞任何建議。 (很抱歉的資本變量,我最終會解決這些問題),我的模型是:通過auto_now = True和auto_now_add = True排序數據存儲區項目

class Rep(db.Model): 
    mAUTHOR = db.UserProperty(auto_current_user=True) 
    mUNIQUE = db.StringProperty() 
    mCOUNT = db.IntegerProperty() 
    mDATE = db.DateTimeProperty(auto_now=True) 
    mDATE0 = db.DateTimeProperty(auto_now_add=True) 
    mWEIGHT = db.IntegerProperty() 
    mAGE = db.IntegerProperty() 

查詢:

QUERY3 = Rep.all() 
    QUERY3.filter("mAUTHOR =", user) 
    QUERY3.order("mAGE") 
    RESULTS3 = QUERY3.fetch(7) 

這是我在Mako的模板中使用:

% for result in RESULTS3: 
     <% result.mAGE = int((result.mDATE - result.mDATE0).seconds) %> 
     <p>${result.mUNIQUE} (${result.mCOUNT}) (${result.mAGE})</p> 
    % endfor 

這裏是一個壞的排序輸出示例:

mUNIQUE mCOUNT mAGE 
A  (11) (38604) 
C  (19) (5319) 
D  (10) (1797) 
E  (17) (2735) 
F  (16) (871) 

謝謝!

回答

1

關閉我的頭頂,看起來你只是在計算mAGE當你檢索記錄,即做查詢。在將數據放入數據存儲之前,每次修改對象時都不應該計算它嗎?

在此之前,雖然,你確定這是你想要做的嗎? mAGE將是您上次修改每條記錄和記錄創建時間之間的時間。這似乎是一個奇怪的事情來排序。如果要按記錄的實際年齡(創建後的時間)進行排序,請使用mDATE0進行排序。或者,如果您想按最近的更改進行排序,請使用mDATE

要反向排序,請使用QUERY3.order("-mDATE")(注意連字符)。

相關問題