Взаимозависимый API фильтра в структуре django rest - PullRequest
0 голосов
/ 05 мая 2020

Я хочу предоставить образец набора данных через единую конечную точку c HTTP API, которая способна фильтровать, группировать и сортировать. В этом я хочу, чтобы API был взаимозависимым. Например, Если мне нужно показать количество показов и кликов, которые произошли до 1 июня 2017 года, с разбивкой по каналам и странам, отсортированные по кликам в порядке убывания. Я знаю, как выполнить единственную операцию в фильтре django, используя django ORM и django rest_framework_filters, но мне совершенно неизвестна эта постановка проблемы. Мы будем благодарны за любую помощь.

Это мое мнение: class filter_dataset (ListCreateAPIView): serializer_class = AdjustDatasetSerializers filter_backends = (filters.DjangoFilterBackend,) filterset_fields = ('доход', 'расходы', 'OS', 'date') filterset_class =

def get_queryset(self):
    dataset = Dataset.objects.all()
    return dataset

def get(self, request):
    dataset = self.get_queryset()
    serializer = self.serializer_class(dataset, many=True)

    return Response(serializer.data, status=status.HTTP_200_OK)

Это мой класс сериализатора:

class AdjustDatasetSerializers(serializers.ModelSerializer):
class Meta:
    model = Dataset
    fields = (
        'date',
        'channel',
        'OS',
        'impressions',
        'clicks',
        'installs',
        'spend',
        'revenue',
    )

А это мой models.py:

class Dataset(models.Model):
date = models.DateTimeField(max_length=255,auto_now_add=True)
channel = models.CharField(max_length=255,null=True, blank=True)
OS = models.CharField(max_length=255,null=True, blank=True)
impressions = models.CharField(max_length=255,null=True, blank=True)
clicks = models.CharField(max_length=255,null=True, blank=True)
installs = models.CharField(max_length=255,null=True, blank=True)
spend = models.CharField(max_length=255,null=True, blank=True)
revenue = models.CharField(max_length=255,null=True, blank=True)
...