使用CoreAPI在Viewset中使用Django REST自定义视图参数

时间:2016-10-14 01:46:20

标签: python django rest django-rest-framework

如果我将django-rest-framework视图框架定义为:

class ProblemViewSet(viewsets.ModelViewSet):
    queryset = Problem.objects.all()
    serializer_class = ProblemSerializer

    @detail_route(methods=['post'], permission_classes=(permissions.IsAuthenticated,))
    def submit(self, request, *args, **kwargs):
        # my code here
        return Response(...)

当我查看已定义的CoreAPI模式时,我发现:

problems: {
    create(title, text, value, category, hint)
    destroy(pk)
    list([page])
    partial_update(pk, [title], [text], [value], [category], [hint])
    retrieve(pk)
    submit(pk)
    update(pk, title, text, value, category, hint)
}

我希望submit API端点采用名为answer的附加参数,但到目前为止,我还没有想出如何添加这样的自定义参数。我知道我可以直接传入POST数组,但这看起来不够优雅且非RESTful。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不明白你的问题,但我认为你想在输入中添加归档answer到django-rest表单或raw,你可以在序列化程序ProblemSerializer中添加下一个:

from rest_framework import serializers
...
class CustomerSerializer(serializers.ModelSerializer):
    answer = serializers.SerializerMethodField()
    class Meta:
        model = Problem
        fields = ['answer', 'my-normal-params',...]

def get_answer(self, problem):
    if hasattr(problem, 'answer'):
        request = self.context['request']
        return answer

在get_answer方法中,您将在json中显示所需的值,或者如果需要,您可以返回None(null),

如果这不是你的问题,请说出来,我会帮助你。