2016-10-30 2 views
1

Django REST Framework를 사용하여 아래 뷰 카테고리에서 get_serializer_context() 메소드를 오버라이드하므로, 뷰어 클래스에 추가 컨텍스트 변수를 전달할 수있다. 아래 (serializer.py),하지만 내 API보기 결과 브라우저에서 null 값을받습니다. 내 결과가 아래에 있습니다 (결과). 어떤 도움이라도 대단히 감사하겠습니다.Django Rest Serializer에 Extra Context를보기에서 전달하는 방법

view.py

class TaskListMixin(object): 
    s1 = Schedule.objects.get(pk=1) 
    r1 = Room.objects.get(pk=2) 
    sp1 = r1.spacetype.pk 
    s = Space.objects.get(pk = sp1) 
    queryset = s.task.all() 
    serializer_class = SimpleSerializer3 
    permission_classes = (permissions.IsAuthenticated,) 


class TaskListViewSet(TaskListMixin, generics.BulkModelViewSet): 

    def get_serializer_context(self): 
     context = super(TaskListViewSet, self).get_serializer_context() 
     return {'request' : 'test'} 

serializer.py

class SimpleSerializer3(BulkSerializerMixin, ModelSerializer): 


is_my_object = serializers.SerializerMethodField() 

def get_is_my_object(self, obj): 
    test_me = self.context.get('request') 


class Meta(object): 
    model = Task 
    list_serializer_class = BulkListSerializer 
    fields = ('pk','task_name', 'is_my_object') 

결과

[ 
{ 
    "pk": 1, 
    "task_name": "Remove large debris from floor", 
    "is_my_object": null 
}, 
{ 
    "pk": 2, 
    "task_name": "Clean walls and horizontal surfaces", 
    "is_my_object": null 
}, 
{ 
    "pk": 3, 
    "task_name": "Clean touch points", 
    "is_my_object": null 
}, 
{ 
    "pk": 4, 
    "task_name": "Empty trash container", 
    "is_my_object": null 
}, 
{ 
    "pk": 6, 
    "task_name": "Spot clean desks/furniture", 
    "is_my_object": null 
}, 
{ 
    "pk": 7, 
    "task_name": "High/Low dust", 
    "is_my_object": null 
} 
] 

답변

0

당신은 당신의보기 컨텍스트를 받고 있지만 업데이트를 반환 없음.

def get_serializer_context(self): 
     context = super(TaskListViewSet, self).get_serializer_context() 
     context.update({'request' : 'test'}) 
     return context 
-1

이 문제가 해결되었습니다. get_is_my_object (self, obj)에서 값을 반환하지 않았습니다.

def get_first_name(self, obj): 
    test_me = self.context.get('request') 
    return test_me 
관련 문제