DRF: как получить подробное название для выбора? - PullRequest
0 голосов
/ 05 сентября 2018

Допустим, у меня есть эта модель:

class Student(models.Model):
    YEAR_IN_SCHOOL_CHOICES = (
        (FR, 'Freshman'),
        (SO, 'Sophomore'),
        (JU, 'Junior'),
        (S, 'Senior'),
    )
    year_in_school = models.CharField(
        max_length=2,
        choices=YEAR_IN_SCHOOL_CHOICES,
        default=FRESHMAN,
    )

Если я использую DRF для предоставления значения для поля year_in_school, я получу первый параметр выбора, например: "FR".

Как мне выставить второй параметр "Первокурсник" вместо "FR"?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

В дополнение к ответу @neverwalkaloner (если по какой-то причине вы предпочитаете делать это по-другому), вы также можете добиться того же поведения, переопределив метод to_representation сериализатора, чтобы использовать метод get_FOO_display пример:

def to_representation(self, instance):
    ret = super().to_representation(instance)
    ret['year_in_school'] = instance.get_year_in_school_display()
    return ret
0 голосов
/ 05 сентября 2018

Вы можете использовать метод модели get_FOO_display в качестве источника поля сериализатора:

year_in_school = serializers.CharField(source='get_year_in_school_display')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...