2012-05-10 10 views
2

Iので、STARTTIMEは、char型のフィールドであるDjangoはクエリ結果のフィールドタイプを変更する(!)

 
class MonitorData(models.Model): 
    [... other stuff] 
    starttime = models.CharField(max_length=64, db_column='spurlStartTime', blank=True) 

次のモデル

今(データベースには、それは日時の列を表して)持っています、私が取得しています何

 
oo=models.MonitorData.objects.all() 
print oo[0].starttime 
print type(oo[0].starttime) 

そして、ここにある:ここで私がやっているものだ

 
00:35:59 
<type 'datetime.time'> 

自分の理由から(議論したくない)、私はそれをvarcharとして読んで、自分で解析したいと思っています。しかし、私に知られていない理由のためにdjangoは私にそれを許可していません、それはdatetimeにそれを変換する!

誰にも私になぜジャンゴにそのような振る舞いがあり、私の貴重な紐を取り戻すことができますか? djangoが文字列としてこの値をキャストするように強制する方法はありますか?

PS:私はそうplsは

+0

私は実際には少し離れてこの作品には驚いていますが、フィールドはDATETIMEなので、Djangoはdatetimeとして扱います。 –

+0

'oo [0] .spurlstarttime'は入力ミスで、' oo [0] .starttime'にする必要がありますか? – astevanovic

+0

はい、それはstarttimeです - 固定それ – Serafeim

答えて

4

Djangoはそれに何もしていないことを私に答えていない)strのを(使用する方法を知っています。 DBAPIアダプタは、それがDATETIMEであると判断し、したがってdatetimeを返します。 CharFieldには、日時をテキストに強制するものは何もありません。

+0

私はそれをしたいと思ったら何ができますか?サブクラスCharField? – Serafeim

+0

しかし、実際に行うべきことは、それをデータベースのVARCHARにすることです。 –

+0

おそらくそれは私がやることです、ありがとう! – Serafeim

0

私は、 と思っています。datetime形式で値を保存する代わりに。 isoformatに保存してみてください。あなたは簡単に変換することができます。

関連する問題