gpt4 book ai didi

django - 返回 DRF 序列化程序中选择字段的人类可读元素

转载 作者:行者123 更新时间:2023-12-04 14:23:04 26 4
gpt4 key购买 nike

如何在序列化程序类中返回 Choice 字段的人类可读元素。下面的示例代码。

from rest_framework import serializers  
from model_utils import Choices
from django.utils.translation import ugettext_lazy as _

COMPANY_TYPE = Choices(
(1, 'Public', _('Public Company')),
(2, 'Private', _('Private Company')),
(3, 'Other', _('Other Type')),
)

class CompanySerializer(serializers.ModelSerializer):
company_type = serializers.ChoiceField(choices=COMPANY_TYPE)
company_type_name = serializers.ReadOnlyField(source=COMPANY_TYPE[1]) # <=== This is the issue

class Meta:
model = Company
fields = ('id', 'title', 'company_type', 'company_type_name')

如果说公司表中的条目有 company_type = 1 ,并且用户发出 API 请求,我想包含 company_type_name 的额外字段值 Public Company .

所以问题是我无法传递 company_type 的当前值到序列化程序,以便它可以返回选择字段的字符串值。

最佳答案

您可以使用方法字段和通过 get_Foo_dispay() 来做到这一点。

company_type_name = serializers.SerializerMethodField()
def get_company_type_name(self, obj):
return obj.get_company_type_display()

关于django - 返回 DRF 序列化程序中选择字段的人类可读元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49414773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com