DRF:如何获得详细的选择名称?

时间:2018-09-05 10:02:57

标签: django django-rest-framework django-serializer

假设我有这个模型:

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”。

如何显示第二个参数“ Freshman”而不是“ FR”?

2 个答案:

答案 0 :(得分:3)

您可以使用模型的get_FOO_display方法作为序列化器字段的来源:

year_in_school = serializers.CharField(source='get_year_in_school_display')

答案 1 :(得分:3)

除了@neverwalkaloner答案(如果出于某些原因,您更愿意采用不同的方式),您还可以通过覆盖序列化程序的to_representation方法来使用{{1} }实例的方法:

get_FOO_display