Return display_name in ChoiceField

两盒软妹~` 提交于 2019-12-06 12:14:03

I found a possible solution, namely defining my own field as follow:

class MyChoiceField(serializers.ChoiceField):

    def to_representation(self, data):
        if data not in self.choices.keys():
            self.fail('invalid_choice', input=data)
        else:
            return self.choices[data]

    def to_internal_value(self, data):
        for key, value in self.choices.items():
            if value == data:
                 return key
        self.fail('invalid_choice', input=data)

It works the same way as to ChoiceField, but returns and accepts labels instead of keys.

mariodev

There's no way other than overriding your serializer. Please take a look here, to see how it can be done.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!