2016-07-25 9 views
1

私は他のモデルに関連付けられた外部キーを持つDjangoモデルを持っています。各モデルは同じフィールド名(属性)を持っていますcreated_atとupdated_atフォーマットされた日時フィールドでdjangoクエリーセットの結果を取得するには

すべてのdjangoクエリーセット結果では、私はdatetime値を取得します。

Model.objects.all().values('created_at') 

しかし、私は、 "DD-MM-YYYYのHH:MM:SS" に日時フィールドをフォーマットしたいとDjangoのクエリ結果でミリ秒をダウントリム。

私は「余分」を使用し、かつ正常に動作し、次のコマンド

dt = connection.ops.date_trunc_sql('day','created_date') 
objects.extra({'date':dt}).values('date') 

ようdate_trunc_sql場合。しかし、私が次のように問い合わせると、あいまいな文のエラーが発生します。

objects.extra({'date':dt}).values('date', 'x', 'y', 'z') 

この問題を解決するにはどうすればよいですか?

答えて

1

解決方法が見つかりました。

data = list(Model.objects.extra(select={'date':"to_char(<DATABASENAME>_<TableName>.created_at, 'YYYY-MM-DD hh:mi AM')"}).values_list('date', flat='true') 

それは、我々は複数のデータベース(あいまいな)を持っている場合、それはdbname_tablename.attributeする必要があり、ちょうどtablename.attributeではありませんYYYY-MM-DD HH」にトリミングのcreated_at datetime値のリストをなります

: MM 'フォーマットである。

0

私はvalues()機能はdatetime結果の書式設定に関連するとは思わないと思います。しかし、それがなぜあなたを悩ませるのですか?あなたはそれらを表示しようとすると、適切な形式に変換できませんか?テンプレート内でレンダリングしようとすると、djangoにはdatetime値をフォーマットするためのテンプレートフィルタdateがあります。https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#date

+0

真実、私は同じことをやっているが、私の用途はデータをpdf/csvに書き込むことである。これは反復処理を行いたい。 – user2959723

+0

データをレンダリング/処理している限り、それは真実ではないあなたは常にクエリーセットを繰り返しているので、あなたのソリューションでさえ、何も得られませんでした。反対側では、ソリューションによってコードが読みにくくなり、基礎となるデータベースに依存していました。データベースを変更した場合、コードが破損して移植性が損なわれる可能性があります。 –

1

おそらく私はあなたの質問を誤解しましたが、なぜ<datetime_object>.strftime('%d-%m-%Y %H:%M:%S')のようなものを使用しないのですか?

+0

フォーマットされた日付文字列はdjango querysetの結果でなければなりません – user2959723

関連する問題