簡體   English   中英

當我在不基於 Model 的序列化程序中將 Charfield 中的選項放入時出錯 - Django Rest 框架

[英]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 框架中使用選擇字段,請使用: ChoiceFieldMultipleChoiceField而不是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM