datetime から抽出された日付を使用して QuerySet をフィルター処理する方法を理解しようとしています。
私は使用Django-filter
していますが、非常に効果のない QuerySet を反復せずにそのようなルックアップを作成することはできません。
datetime__date__gte
私はどれがうまくいかないか試しました。
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))
>> []
日付だけでなく時間も見えるからです。したがって、適切にフィルタリングできるようにするには、日付を抽出する必要があります。