django-rest-framework - 使用选项序列化 IntegerField 的选择文本

标签 django-rest-framework

我想序列化一个有很多选择的模型,比如:

class House(models.Model):
ACCESSIBILITY_CHOICES = (
    (ACCESSIBILITY_FULL, 'Full'),
    (ACCESSIBILITY_PARTIAL, 'Partial'),
    (ACCESSIBILITY_NONE, 'None')
)

accessibility = models.IntegerField(max_length=1, choices=ACCESSIBILITY_CHOICES, null=True)

我喜欢默认的序列化程序,例如:
class HouseView(generics.ListCreateAPIView):
    model = House
    serializer_class = HouseSerializer

class HouseSerializer(serializers.ModelSerializer):

    class Meta:
        model = House

如果我只想要整数值,效果很好
{accessibility:1}

但是,我想得到什么
{accessibility:'Full'}

非常感谢您的帮助。
非常感谢。

最佳答案

使用原始值设置序列化程序字段中的选项,如下所示...

ACCESSIBILITY_CHOICES = (
    ('Full', 'Full'),
    ('Partial', 'Partial'),
    ('None', 'None')
)

然后看看覆盖 'to_native' 方法,以便将字符串值转换为它们的等效整数。

这应该给你一个使用字符串表示的外部 API,但一个使用整数表示的后端。

2019 年更新: DRF 现在使用不同的方法名称从/到内部转换,参见 docs .命名它们:to_representationto_internal_value , 而不是 to/from_native .

关于django-rest-framework - 使用选项序列化 IntegerField 的选择文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107471/

相关文章:

token - 在 DjangoRestFramework 中更改 token 键名称的目的是什么

python - 由于日期格式,django rest framework 列表查询自定义 json 数组结果响应

django - 如何使用 Django Rest Framework 将上传进度条与 s3 存储桶上的上传同步

python - 在 Django Rest Framework Views 中测试身份验证——测试时无法进行身份验证

python - 在 Django REST 中增加计数器字段的最佳位置

Django rest 框架 ModelSerializer 运行太慢

python - DRF 使 DateTimeField 变得简单,而不考虑默认时区

python - 尝试使用 django Rest 框架序列化嵌套对象时出现完整性错误

python - Django:使用 "cannot import name import_string"时为 "rest_framework_docs"

python - 如何在 django Rest 框架中序列化当前用户?