Django Фильтр даты с REST с предварительной выборкой / Как сделать диапазон дат? - PullRequest
0 голосов
/ 24 апреля 2020

Теперь в моем классе CoincostFilterSet установлена ​​начальная дата для фильтра результатов. И как установить дату окончания в моем коде?

Теперь у меня есть этот URL

http://example.com/api/v1/CoinCost/?symbol=MNST&timestamp=2020-04-20T09:17:34

, но мне нужно

http://example.com/api/v1/CoinCost/?symbol=MNST&timestamp=2020-04-20T09:17:34&timestamp=2020-04-23T05:17:34

Чтобы получить результаты с 20 апреля по 23.

filters.py

class DateTimeGteFilter(filters.IsoDateTimeFilter):
def filter(self, qs, value):
    if value != None:
        return qs.prefetch_related(Prefetch('coincosts_set', to_attr='filtered_coincosts', queryset=CoinCosts.objects.filter(timestamp__gte=value)
            )
        )
    else:
        return qs

views.py

class CoinCostFilterSet(filters.FilterSet):
timestamp = DateTimeGteFilter()

class Meta:
    model = Coins
    fields = {
        'symbol': ['exact'],
    }

serializers.py

class CoinSerializer(serializers.ModelSerializer):
    class Meta:
        fields = ('symbol', 'crr', 'costs')
        model = Coins
    costs = CoinCostsSerializer(source='filtered_coincosts', many=True)

Справка. Спасибо!

...