我有一个项目,我希望能够创建一个不基于模型的串行器,它可以接受我选择的自定义结构。
示例:
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操作时呈现类似的结构,并且最小化验证工作。
这可能吗?
答案 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)