3

次のようなモデルのフィールドがあります。

class Sample(models.Model): 
    start = models.TimeField(verbose_name=_("start time")) 
    end = models.TimeField(verbose_name=_("end time"))

ここで、「開始」属性と「終了」属性でオブジェクトをフィルタリングする必要があります。たとえば、すべてのオブジェクトを今日の日付、時間、および 30 分以内の時間でフィルタリングする必要があります。

私は試した:

 models.Sample.objects.filter(start__gt=datetime.now(),
                             end__lt=datetime.now() + timedelta(minutes=30))

2 つのフィルターでフィルター処理するのは間違いです..そして、私のコードは今日までにフィルター処理されません。たとえば、今日 (火曜日) の 12 時から 12 時 30 分までのすべてのオブジェクトが必要です。

事前に助けてくれてありがとう。

4

1 に答える 1

3

モデル宣言でused TimeFieldを使用しました。これは、日、月、または年のデータを含まない時間のみを保存します。

Python で datetime.time インスタンスによって表される時間

したがって、使用する代わりに使用datetime.now()するdatetime.now().time()代わりにdatetime.now() + timedelta(minutes=30)使用する(datetime.now() + timedelta(minutes=30)).time()

日、月、年、時間によるフィルタリングを含めることができるようにするには、モデルの TimeField をDateTimeFieldに置き換えます。datetime.now()と を使用したフィルタリングtimedelta(minutes=30)は、元の質問と同じように機能します。

于 2012-10-11T12:05:06.180 に答える