Как сериализовать результат запроса ниже? - PullRequest
0 голосов
/ 08 июля 2019

Я использую django rawquery, чтобы получить результат из базы данных и сериализовать его следующим образом:

 class arizakestirimi_func(ListAPIView):    
 serializer_class = arizakestirimiserializer
 def get_queryset(self):
    queryset = isyeriarizabilgileri.objects.raw("""
        SELECT
        M.id as id,
        DATE_PART('day',(M.tarih)::timestamp - (D.mindate)::timestamp) *24 +DATE_PART('hour',(M.tarih)::timestamp - (D.mindate)::timestamp) +
        DATE_PART('minute',(M.tarih)::timestamp - (D.mindate)::timestamp) / 60 as datediff
        FROM arizakestirimi_isyeriarizabilgileri M
        INNER JOIN
        (SELECT DISTINCT ON (isyeri) isyeri,id as id,durustahmini,tarih as mindate
     FROM arizakestirimi_isyeriarizabilgileri 
     WHERE durustahmini='MEKANIK ARIZA' AND isyeri='15400001'
     ORDER BY isyeri, tarih ASC) D
        ON M.isyeri = D.isyeri AND M.durustahmini = D.durustahmini
        ORDER BY M.tarih ASC

      """)
    return queryset

Класс сериализатора показан ниже:

class arizakestirimiserializer(serializers.Serializer):

    isyeri = serializers.CharField(max_length=30)
    datediff= serializers.FloatField()

Результат json. Я использую ListAPIView, чтобы показать json:

[
    {
        "isyeri": "15400001",
        "datediff": 2520.0
    },
    {
        "isyeri": "2520.0",
        "datediff": 704.0
    },
    {
        "isyeri": "15400001",
        "datediff": 700.0
    }
]

Я хочу получить JSON:

{
    "15400001":[
               {"2520.0"}, 
                {"700.0"},
                {"704.0"}
]
}

Спасибо

...