6

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))

>> []

日付だけでなく時間も見えるからです。したがって、適切にフィルタリングできるようにするには、日付を抽出する必要があります。

4

2 に答える 2