Sasha  Odegov
Sasha Odegov

Reputation: 183

Django-rest-framework serialize verbose_name

I have model with boolean fields:

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

How write serializator class for verbose_name serialization? How i can get this data?

Response Example:

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

or

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

Upvotes: 0

Views: 1484

Answers (1)

zymud
zymud

Reputation: 2249

You can get verbose name from model field details. Example with serializer method field:

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
        }

Upvotes: 2

Related Questions