2016-05-07 6 views
1

フロントエンドから入力した検索オプションがあります。Django:フィルタオプションを辞書として渡してDjangoのDateTimeField DBでユーザの入力日付をフィルタリングするにはどうすればよいですか?

search = {"Date":"2016-02-07","Status":"pass" } 

次に、これらの値をDBの列名でマッピングしています。

query_to_field_mapping = {"Date": "date","Status": "result"} 

query = {query_to_field_mapping[key]: value for key, value in search.items()} 

私はDBにDateTimeFieldを持っています。私は、フィルタを使用していたとき、私は、以下のいずれかにしようとしています:

ここ
result = Customer.objects.filter(**query) 

が同様にフィルタレコードを取得したい日付フィールド&ごとにフィルタリングしようとしています。私は成功していない同じことを試みた。どのように進むことができますか?

すごく助かります!

私はSOから他のいくつかの質問をしようとした: How can I filter a date of a DateTimeField in Django?

は、私たちは今、私は辞書として渡しています1 .Butで列名1を渡しているとして、そこに私の問題を解決する方法を得ることができませんでした。

+0

「私は全く成功しなかった」 - 何を試しましたか? – solarissmoke

+0

ORM ** result = Customer.objects.filter(** query)** – danny

+0

を試してください[日時文字列をDjango DateTimeFieldに解析する](http://stackoverflow.com/questions/8636760/parsing-a-)を参照してください。 datetime-string-into-a-django-datetimefield)。日付文字列の代わりに 'datetime'オブジェクトをクエリに渡す必要があります。 – solarissmoke

答えて

1

あなたのアプローチは正しいです。これが機能しない理由は、date文字列を指定してdatetimeフィールドの等価をフィルタリングするため、2016-02-07の日付(クエリパラメータ)が2016-02-07T12:32:22(DB内の可能な値)に等しくないためです。

この状況を解決するには、自分の質問のリンクからフィールド検索の可能性の1つを使用します。具体的な例として、そうのように、containsフィールドのルックアップを使用してみましょう:

query_to_field_mapping = {"Date": "date__contains","Status": "result"} 

.filter()query_to_field_mappingを渡すときにこのように、それはあなたが必要とする日時の範囲内の日付を探します。

関連する問題