[英]Error when I put choices in Charfield in a Serializer which is not based on Model - Django Rest Framework
我制作了一个序列化程序,它不是基于 model,其中一个字段是一个字符字段,我想在其中放置特定的选择。 那可能吗?
我在输入代码时遇到的错误:
TypeError: init () 得到了一个意外的关键字参数 'choices'
STATUS_TYPES = (
('', ''),
('male', 'male'),
('female', 'female')
)
class SomeSerializer(serializers.Serializer):
gender = serializers.CharField(max_length=100, choices=GENDER_TYPES)
要在 Django Rest 框架中使用选择字段,请使用: ChoiceField或MultipleChoiceField而不是 Charfield(..., choices=(...))
在你的情况下:
class SomeSerializer(serializers.Serializer):
gender = serializers.ChoiceField(choices=GENDER_TYPES)
使用SerializerMethodField
可以解决此问题。 我假设GENDER_TYPES
元组中的第一个元素是源,第二个元素是你想要的。
GENDER_TYPES = (
('', ''),
('male', 'male'),
('female', 'female')
)
class SomeSerializer(serializers.Serializer):
gender = serializers.SerializerMethodField()
def get_gender(self, obj):
return next(filter(lambda gt: gt[0] == obj['gender'], GENDER_TYPES))[1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.