Django get_FOO_Display()用于范围列表选项


STATUS_APPROVE, STATUS_REJECT, STATUS_PROC, STATUS_PEND, STATUS_PAID = range(5)
STATUS_CHOICES = (
(STATUS_APPROVE, 'Approved'),
(STATUS_REJECT, 'Rejected'),
(STATUS_PROC, 'Processing'),
(STATUS_PEND, 'Pending'),
(STATUS_PAID, 'Paid'),
)
class ExpenseClaim(TimeStampedModel):
status = models.PositiveIntegerField(default=STATUS_PEND,
choices=STATUS_CHOICES, blank=False)
class MileageClaimSerializer(serializers.ModelSerializer):
status = serializers.ChoiceField(choices=STATUS_CHOICES)

我无法找到一种方法来显示具有范围的选择列表的foo。因此,范围键用于存储列表中的点。我需要序列化程序来返回单词,而不是键。

如果这个序列化程序是只读的,您可以在CharField 中使用source属性

status = serializers.CharField(source='get_status_display')

https://www.django-rest-framework.org/api-guide/fields/#source