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
}
]