Django-rest-framework序列化verbose_name

时间:2015-12-04 07:12:45

标签: django serialization django-rest-framework

我有布尔字段的模型:

class ExampleModel(User):
    field_value_one = models.BooleanField(verbose_name=_(u'Field Value One'))
    ....another boolean fields.....  

如何为verbose_name序列化编写serializator类? 我怎么能得到这些数据?

响应示例:

{
    'Field Value One' :true,
    .....
} 

{
    field_value_one: {
        verbose_name: 'Field Value One',
        value: 'true'
    }
}  

1 个答案:

答案 0 :(得分:1)

您可以从模型字段详细信息中获取详细名称。序列化方法字段示例:

from rest_framework import serializers
from .models import ExampleModel

class ExampleModelSerializer(serializers.ModelSerializer):
    field_value_one = serializers.SerializerMethodField()

    class Meta(object):
        model = ExampleModel

    def get_field_value_one(self, obj):
        # get model field
        field = next(f for f in obj._meta.fields if f.name == 'field_value_one')
        return {
            'verbose_name': field.verbose_name.title(),
            'value': obj.field_value_one
        }