私はdatetimeから抽出された日付を使用してQuerySetをフィルタリングする方法を理解しようとしています。datetimeフィールドでgte、lte dateをフィルタリングする方法は?
私はDjango-filter
を使用しており、非常に効果のないQuerySetを反復処理することなくそのようなルックアップを構成することはできません。
私はを試しましたが動作しません。
class MyReservationsFilter(FilterSet):
datetime__lte = DateFilter(method='datetime_filter',name='lte')
class Meta:
model = Reservation
fields = {'status': ['exact'],
# 'datetime': ['lte', 'gte'],
'destination_from': ['exact'],
'destination_to': ['exact'],}
def datetime_filter(self, queryset, name, value):
lookup = 'datetime__'+name
return queryset.filter(**{lookup:value})
あなたは何をすべきか知っていますか?
ので、私はdatetime__lte/gte
を使用することはできません:私はReservation
オブジェクトrを持って
。
>> r.datetime
>> datetime.datetime(2017, 8, 31, 17, 55)
>> r.datetime.date()
>> datetime.date(2017, 8, 31)
だから今は、日付に基づいてフィルタリングしてみてください:
Reservation.objects.filter(datetime__lte=datetime.date(2017, 8, 31),datetime__gte=datetime.date(2017, 8, 31))
>> []
、それはあまりにも日付ではなく、時間だけを見ていないためです。だから私は適切にフィルタリングできるように日付を抽出する必要があります。