私は入力フィールドからの日付と入力フィールドからの日付を持っています。私が日付範囲を渡すとうまくいきます。しかし、1つまたは両方の空白を残すと、すべてのアイテムまたは部分的なアイテムを取得するときに、ValueErrorが返されます。デフォルトの空の文字列を作成しようとすると、クエリ値またはフォーマットエラーとしてNoneを使用できません。Django:空の日付文字列はすべて返される
def report(self, request):
date_from = query['date_from'] if query['date_from'] else None
date_to = query['date_to'] if query['date_to'] else None
queryset = Client.objects.filter(
client_code__in=clients,
account__note__creation_time__gte=date_from,
account__note__creation_time__lte=date_to,
)
より良いコンテキストを与えることを、私は空の両方のフィールドを残せば、私はフィールドから日付を記入しますが空のフィールドする日付を残せば今、私は日からすべてのアイテムを取得する必要がありますし始めてから、すべてのアイテムを取得する必要があります今から今まで。もし私がフィールドの日付をフィールドから空の日付を購入している、私は日付までの最初からアイテムを取得する必要があります。
怠け者になって、うまく機能するソリューションを見つけましたが、それほど幸せではありません。誰かが分かち合うことが分かれば、より良いことが分かります。
query = Q()
if clients:
clients = clients.split(',')
query &= Q(client_code__in=clients)
if date_from:
query &= Q(account__note__creation_time__gte=date_from)
if date_to:
query &= Q(account__note__creation_time__lte=date_to)
Client.objects.filter(query)
あなたが何を求めているのか分からない。このように動作する理由について説明したいですか? DjangoやPythonの動作方法を変更するようにあなたに要求していますか?コード内の問題を特定しますか? –
私の質問は私のコードにすることができますので、date_fromまたは左の空白の場合、querysetはその条件を無視する必要があります。 –
あなたが好きではない方法は、あなたがそれをやる方法です。あなたはあらゆる種類の方法を賢明にすることができますが、要点は、Djangoに日付の列が日付よりも大きいか小さい日付のクエリを実行するように要求しています。 Djangoはそれと何をやっているのですか?それとも、その問題のデータベース。それはあなたが望むものを知らない。 –