2016-10-30 9 views
1

Django REST Frameworkを使用して、ビュークラス(get.py)のget_serializer_context()メソッドをオーバーライドしています(シリアライザに余分なコンテキスト変数を渡すことができます)。下(serializer.py)、私のAPIの結果がブラウザに表示されるときにnull値を受け取ります。私の結果は以下の通りです(結果)。どんな助けでも大歓迎です。ビューから余分なコンテキストをDjango Restシリアライザに渡す方法

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 
関連する問題