登録したデータを「今日の登録分」だけ表示するようにして、「昨日の分」リンクでずーとたどっていけるようにしたいなぁ、と。
検索結果を filter 使って絞って、order_by でソートできるのもわかりました。
なので、「今日の分だけ表示」はできた。
んで、「昨日(前の日)」を得るために、日付の書式で入力された文字列('2007-04-08'とか)を日付型に変換する方法がよくわからんかった。。。
とりあえず、
>>> from datetime import datetime, timedelta
>>> s='2007-04-07'
>>> ss=s.split('-')
>>> ss
['2007', '04', '07']
>>> dt = datetime(int(ss[0]),int(ss[1]),int(ss[2]))
>>> dt
datetime.datetime(2007, 4, 7, 0, 0)
>>> dt2 = dt - timedelta(days=2)
>>> dt2
datetime.datetime(2007, 4, 5, 0, 0)
こんな感じで変換と演算はできたんだけど、変換はちょっと面倒くさい。
もっと簡単なやり方が有りそうな気が???。
java の、SimpleDateFormat みたいにできんかな?
追記
id:bonlife さんにご指摘いただいたので、試してみました。
>>> import time
>>> from datetime import datetime, timedelta
>>> s='2007-04-09'
>>> st=time.strptime(s,'%Y-%m-%d')
>>> st
(2007, 4, 9, 0, 0, 0, 0, 99, -1)
>>> dt=datetime(st.tm_year, st.tm_mon, st.tm_mday)
>>> dt
datetime.datetime(2007, 4, 9, 0, 0)
>>> dt2=dt-timedelta(days=2)
>>> dt2
datetime.datetime(2007, 4, 7, 0, 0)
datetime 型で返されるのではなくて、struct_time という構造体みたいなものになるんですね。
なるほど、自前で文字列分解して int 変換してやる必要はなくなりますね。
datetime 型で生成する部分はしかたないんだな。