2016-10-30 3 views
1

Я использую Django REST Framework для переопределения метода get_serializer_context() в моем классе вида ниже (view.py), поэтому я могу передать дополнительную переменную контекста в свой сериализатор ниже (serializer.py), но я получаю нулевое значение, когда представление моего API приводит к браузеру. Мои результаты ниже (результат). Любая помощь будет принята с благодарностью.Как передать дополнительный контекст в Django Rest Serializer из вида

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 
Смежные вопросы