这是我的序列化器:
class MetaDataSerializer(serializers.Serializer):
bg_colors = ColorSerializer(Color.objects.all(), many=True)
button_choices = serializers.SerializerMethodField()
class Meta:
fields = ('bg_colors', 'button_choices')
def get_button_choices(self, obj):
return {
'save': 1, 'continue': 2, 'cancel': 3, 'back': 4
}
我从我的角度调用这个序列化器,如下所示:
class MetaDataView(RetrieveAPIView):
serializer_class = MetaDataSerializer
def get(self, request, *args, **kwargs):
return Response(self.get_serializer().data)
在回复中我只得到bg_colors
场地。响应中缺少另一个字段,并且它的 get_field 方法也没有被调用。
我在这里做错了什么?
而不是通过Colors
查询集直接在序列化器定义中,从您的视图集中传递它。
进行以下更改:
class MetaDataSerializer(serializers.Serializer):
bg_colors = ColorSerializer(many=True)
button_choices = serializers.SerializerMethodField()
class Meta:
fields = ('bg_colors', 'button_choices')
def get_button_choices(self, obj):
return {
'save': 1, 'continue': 2, 'cancel': 3, 'back': 4
}
class MetaDataView(RetrieveAPIView):
serializer_class = MetaDataSerializer
def get(self, request, *args, **kwargs):
final_data = {"bg_colors": Colors.objects.all()}
return Response(self.get_serializer(final_data).data)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)