Я хочу предоставить образец набора данных через единую конечную точку 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)