1

querySetをフィルタリングするためにrequest.GETを介して2つの日付値を送信しています。

if 'from_date' in request.GET:    
            from_date = request.GET['from_date']
            if 'to_date' in request.GET:    
                to_date = request.GET['to_date']
            else:
                to_date = datetime.date.today()        
            calls_queryset = calls_queryset.filter(contact_date__range=(from_date, to_date))

ただし、filter__rangeは壊れます。送信する日付形式が気に入らないようです。

?from_date=08/08/2012&to_date=08/29/2012

範囲内に配置する前に、日付になるようにキャストする必要があると思いますが、これは正しいですか?これを行うための最も効率的な方法は何ですか?

どうもありがとう

4

3 に答える 3

3

は、フォーマットから python へのDateField変換をサポートしています。'YYYY-mm-dd'datetime.date

>>> from django.db import models
>>> models.DateField().to_python('2012-08-22')
datetime.date(2012, 8, 22)

したがって、rangeルックアップは文字列をパラメーターとして受け入れます。

>>> from django.contrib.auth.models import User
>>> print User.objects.filter(last_login__range=('1970-01-01', '2012-12-31')).values('pk').query
SELECT "auth_user"."id" FROM "auth_user" WHERE "auth_user"."last_login" 
BETWEEN 1969-12-31 16:00:00 and 2012-12-30 16:00:00

文字列値をに変換しようとすることにlast_login注意してください(そして、私は+8タイムゾーンにいるため、デフォルトは1日前になります)DateTimeFielddatetime.datetime00:00:0016:00:00

クライアント側では、JavaScript で ISO 8601 形式の文字列を出力するにはどうすればよいですか? を参照してください。の形式で日付文字列を生成します'YYYY-mm-dd'

于 2012-08-29T14:02:54.057 に答える
1

URL にスラッシュを使用しないでください... ドットに置き換えるか、yyymmdd 形式を使用してください。

于 2012-08-29T11:17:31.767 に答える
0

スラッシュはダメです。便宜上、 UNIX タイムスタンプに変換します

次に、それを Python で読み取り可能な形式に変換するには、次のようにします。

import time
time.ctime(int(retrieved_timestamp))
于 2012-08-29T11:14:01.520 に答える