我可以在序列化器上使用Django REST和自定义结构吗?

时间:2017-11-24 02:10:36

标签: python django django-rest-framework

我有一个项目,我希望能够创建一个不基于模型的串行器,它可以接受我选择的自定义结构。

示例:

class OptionSerializer(serializers.Serializer):
    option_1 = serializers.IntegerField()
    option_2 = serializers.IntegerField()
    option_3 = serializers.IntegerField()
    option_4 = serializers.IntegerField()
    option_5 = serializers.IntegerField()

    class Meta:
        fields = ('option_1', 'option_2', 'option_3', 'option_4', 'option_5')


class QuestionsSerializer(serializers.Serializer):
    questions = OptionSerializer(data=[], many=True)

    class Meta:
        fields = ('questions',)

在这个例子中,我将有一个名为Questions的自定义对象,它有一个对象数组,每个对象包含键'option_1','option_2','option_3','option_4'和'option_5'。我的目标是在GenericAPIView中使用这样的东西,它允许我在使用可浏览的API尝试POST操作时呈现类似的结构,并且最小化验证工作。

这可能吗?

1 个答案:

答案 0 :(得分:0)

是的,你可以这样做。

class OptionSerializer(serializers.Serializer):
    option_1 = serializers.IntegerField()
    option_2 = serializers.IntegerField()
    option_3 = serializers.IntegerField()
    option_4 = serializers.IntegerField()
    option_5 = serializers.IntegerField()


class QuestionsSerializer(serializers.Serializer):
    questions = OptionSerializer(many=True)

然后,您可以在视图中导入此序列化程序,对于POST请求,您可以将其用作:

serializer = QuestionsSerializer(data=request.data, many=True)