2011-01-15 3 views
2

DataTimeFieldを持つテーブルがあります。私はDateTimeField =特定の日(時間部分を無視する)のすべてのオブジェクトのリストを取得したいと思います。Django ORMを使用してdatetimeフィールドの日付でのみ照会する方法

SQLは次のようになります。

select * from tblname where date(start)='2011-01-14' 

は、クエリのこの種を行うにはORMを取得することが可能ですか?

私はstart__range(...)のような種類のクエリを実行できますが、他の方法で実行できるかどうかは疑問でした。 QuerySet API referenceから

答えて

4

Entry.objects.filter(pub_date__year=2005) 
Entry.objects.filter(pub_date__month=12) 
Entry.objects.filter(pub_date__day=6) 

これは、日付と日時の作品。

2
MyModel.object.filter(start__year=2011, start__month=01, start__day=14) 

このクエリでの問題は、あなたのDBは、機能と対応無しインデックスをいけない場合(ハローMySQLの)あなたはinneficientクエリを持っているということです。

新しいフィールドstart_date = models.DateField(...)を追加し、フィールドを正しく設定するためにsave(...)メソッドをオーバーロードすることもできます。データベース側の開発者が多い場合は、同じ機能のトリガーを使用してください。 :

MyModel.object.filter(start_date=date(2011, 1, 13)) 
+0

私は、あなたの最初のコード例では、単一の等号を意味すると思います。 –

+0

yepが修正されました、thx Nick –

関連する問題