def get_machine_info(self, obj):
         machine_data = UserMachine.objects.filter(id=obj.test_machine_id)
 
-        machine_info_serializer = UserMachineSerializer(machine_data, many=True,
-                                                        context={'request': self.context['request']})
+        machine_info_serializer = UserMachineSerializer(machine_data, many=True)
         return machine_info_serializer.data
 
     # def get_client_max_num(self, obj):
     #
     #     rw_info_serializer = TestResultSerializer(all_data, many=True, context={'request': self.context['request']})
     #     return rw_info_serializer.data
+
+class MachineHistoryRecordSerializer(serializers.ModelSerializer):
+    '''
+    use MachineHistoryRecordSerializer
+    '''
+    machine_info = serializers.SerializerMethodField()
+    reports = serializers.SerializerMethodField()
+
+    class Meta:
+        model = UserMachine
+        fields = ('machine_info', 'reports')
+
+    def get_reports(self, obj):
+        target_records = TestRecord.objects.filter(test_machine_id=obj.id)
+        serializer = TestRecordListSerializer(target_records,many=True)
+
+        return serializer.data
+
+    def get_machine_info(self, obj):
+        target_machine = UserMachine.objects.filter(id=obj.id).first()
+        serializer = UserMachineSerializer(target_machine)
+
+        return serializer.data
\ No newline at end of file
 
 import shortuuid
 
 from django.contrib.auth.hashers import make_password
-from django.shortcuts import render
 from rest_framework.pagination import PageNumberPagination
 
 from exception import TestDataUploadError
 from filters import TestRecordListFilter
 from models import UserMachine, TestCategory
 from pgperffarm.settings import DB_ENUM
+from .serializer import MachineHistoryRecordSerializer
 from .serializer import TestRecordListSerializer, TestRecordDetailSerializer, LinuxInfoSerializer, MetaInfoSerializer, \
     PGInfoSerializer, CreateTestRecordSerializer, CreateTestDateSetSerializer, TestResultSerializer
-from rest_framework.views import APIView
+
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 from rest_framework import mixins
 from rest_framework import status
-from rest_framework import generics
+
 from rest_framework import viewsets
-from .models import TestRecord, LinuxInfo, MetaInfo, PGInfo, TestBranch
+from .models import TestRecord
 import json
 
 
     lookup_field = 'uuid'
     queryset = TestRecord.objects.all().order_by('add_time')
     serializer_class = TestRecordDetailSerializer
-    pagination_class = StandardResultsSetPagination
+    # pagination_class = StandardResultsSetPagination
 
+class MachineHistoryRecordViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
+    """
+    detail test records
+    """
+    lookup_field = 'machine_sn'
+    queryset = UserMachine.objects.all().order_by('add_time')
+    serializer_class = MachineHistoryRecordSerializer
+    # pagination_class = StandardResultsSetPagination
 
 @api_view(['POST'])
 def TestRecordCreate(request, format=None):
                             'metric': dataset['metric'],
                             'median': dataset['median'],
                             'test_cate': test_cate.id,
-                            # status,percentage calc by tarr
+                            # status,percentage calc by receiver
                             'status': -1,
                             'percentage': 0.0,
                         }
 
     avatar = serializers.SerializerMethodField()
     class Meta:
         model = UserMachine
-        # fields = "__all__"
         fields = ('alias', 'os_name', 'os_version', 'comp_name', 'comp_version', 'reports', 'owner' , 'avatar')
 
     def get_alias(self, obj):
 
         avatar = 'http://s.gravatar.com/avatar/' + hashlib.md5(target_owner['email']).hexdigest()
         print avatar
-        return  avatar
\ No newline at end of file
+        return  avatar
+
 
 
 from rest_framework.documentation import include_docs_urls
 from rest_framework.routers import DefaultRouter
-from test_records.views import TestRecordListViewSet, TestRecordCreate, TestRecordDetailViewSet
+from test_records.views import TestRecordListViewSet, TestRecordCreate, TestRecordDetailViewSet, \
+    MachineHistoryRecordViewSet
 from test_records.auth import MachineAuthToken
 # from test_records.view_base import TestListView
 
 router = DefaultRouter()
 router.register(r'records', TestRecordListViewSet, base_name="records")
 router.register(r'detail', TestRecordDetailViewSet, base_name="detail")
-
+router.register(r'machine', MachineHistoryRecordViewSet, base_name="machine")
 # router.register(r'detail', TestRecordListViewSet)
 
 urlpatterns = [