DRF SerializerMethodField 未被调用

2024-04-24

这是我的序列化器:

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(使用前将#替换为@)

DRF SerializerMethodField 未被调用 的相关文章

随机推荐