[英]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.