Как вернуть пользовательский запрос sql, который проходит через сериализатор в django - PullRequest
0 голосов
/ 22 апреля 2020

Я выполняю пользовательский запрос через сериализатор в Django, чтобы я мог использовать данные во внешнем интерфейсе. Однако сериализатор возвращает полные объекты или записи из базы данных. Как я могу вернуть только те поля, которые я хочу вернуть, как указано в моем запросе?

views.py

from .models import Property
from .serializers import PropertySerializer
from rest_framework import generics
from django.views.generic.list import ListView
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework import status

# class PropertyListCreate(generics.GenericAPIView):

@api_view(['GET', 'POST'])
def propertyListCreate(request):
    if request.method == 'GET':
        properties = []
        # properties = Property.objects.all()
        properties = Property.objects.raw("SELECT id as 'id', suburb, COUNT(*) FROM properties_property group by suburb")
        serializer = PropertySerializer(properties,context={'request': request} ,many=True, read_only=True)

        return Response({'data': serializer.data})

models.py

from django.db import models

class Property(models.Model):
    Title = models.CharField(max_length=255)
    Price = models.IntegerField()
    Area = models.FloatField()
    Bedrooms = models.FloatField()
    Bathrooms = models.FloatField()
    Parking = models.FloatField()
    Suburb = models.CharField(max_length=255)
    Address = models.CharField(max_length=255)
    Link = models.CharField(max_length=255)
    Date = models.CharField(max_length=255)

serializers.py

from rest_framework import serializers
from .models import Property

class PropertySerializer(serializers.ModelSerializer):
    class Meta:
        model = Property
        fields = ('id', 'Title', 'Price', 'Area', 'Bedrooms', 'Bathrooms', 'Parking', 'Suburb', 'Address', 'Link', 'Date')

Вывод, который я получаю: Output that I am receiving:

Желаемый вывод будет следующим: The desired output would be the following:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...