'getting problem with working nested json in django framework

Hi Everyone I am trying to writing a code to get nested response based on driver_id.

I am not able to solve this issue, kindly help me out.

views.py

def retrieve(self, request, *args, **kwargs):
        rating= connection.cursor()
        rating.execute(''' SELECT...... ''')
        rating_data=rating.fetchall()
        json_res=[]
        obj={}
        for row in rating_data:
            json_obj=dict(week_start_date=row[0],week_end_date=row[1],driver_id=row[2],driver_name=row[3],mobile=row[4],week_period=row[5],total_trips=row[6],driver_rating=row[7])
            if obj.get('driver_id')==row[2]:
                obj['mobile'].append(json_obj)

            else:
                if obj.get('driver_id')!=None:
                    json_res.append(obj)
                obj={}
                obj['driver_id']=row[2]
                obj['driver_name']=row[3]
                obj['mobile']=[json_obj]
        json_res.append(obj)
        return JsonResponse(json_res,safe=False)

current response

[{'driver_id': 10884,
  'driver_name': 'Dipankar Mandal',
  'mobile': [{'driver_id': 10884,
              'driver_name': 'Dipankar Mandal',
              'driver_rating': 'Mediocre',
              'mobile': '8348447439',
              'total_trips': 60,
              'week_end_date': '2022-05-15',
              'week_period': 'last week',
              'week_start_date': '2022-05-09'}]},
 {'driver_id': 160,
  'driver_name': 'Mohd Sohail Shaikh',
  'mobile': [{'driver_id': 160,
              'driver_name': 'Mohd Sohail Shaikh',
              'driver_rating': 'Mediocre',
              'mobile': '7718908984',
              'total_trips': 20,
              'week_end_date': '2022-04-24',
              'week_period': '4th week',
              'week_start_date': '2022-04-18'},
             {'driver_id': 160,
              'driver_name': 'Mohd Sohail Shaikh',
              'driver_rating': 'Mediocre',
              'mobile': '7718908984',
              'total_trips': 53,
              'week_end_date': '2022-05-15',
              'week_period': 'last week',
              'week_start_date': '2022-05-09'}]},
 {'driver_id': 10884,
  'driver_name': 'Dipankar Mandal',
  'mobile': [{'driver_id': 10884,
              'driver_name': 'Dipankar Mandal',
              'driver_rating': 'Mediocre',
              'mobile': '8348447439',
              'total_trips': 60,
              'week_end_date': '2022-05-08',
              'week_period': '2nd week',
              'week_start_date': '2022-05-02'}]}]

expected output

[{'driver_id': 10884,
  'driver_name': 'Dipankar Mandal',
  'mobile': [{'driver_id': 10884,
              'driver_name': 'Dipankar Mandal',
              'driver_rating': 'Mediocre',
              'mobile': '8348447439',
              'total_trips': 60,
              'week_end_date': '2022-05-15',
              'week_period': 'last week',
              'week_start_date': '2022-05-09'},
             {'driver_id': 10884,
              'driver_name': 'Dipankar Mandal',
              'driver_rating': 'Mediocre',
              'mobile': '8348447439',
              'total_trips': 60,
              'week_end_date': '2022-05-08',
              'week_period': '2nd week',
              'week_start_date': '2022-05-02'}]},
 {'driver_id': 160,
  'driver_name': 'Mohd Sohail Shaikh',
  'mobile': [{'driver_id': 160,
              'driver_name': 'Mohd Sohail Shaikh',
              'driver_rating': 'Mediocre',
              'mobile': '7718908984',
              'total_trips': 20,
              'week_end_date': '2022-04-24',
              'week_period': '4th week',
              'week_start_date': '2022-04-18'},
             {'driver_id': 160,
              'driver_name': 'Mohd Sohail Shaikh',
              'driver_rating': 'Mediocre',
              'mobile': '7718908984',
              'total_trips': 53,
              'week_end_date': '2022-05-15',
              'week_period': 'last week',
              'week_start_date': '2022-05-09'}]}]

Diff checker. Old is current, new is expected



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source