在后端做的话,可以额外加个字段,API 调用时用原来值,展示时用 display_xxx 属性。
# model:
class Post:
category = models.CharField(max_length=100, choices=(...))
# API 设计:
{"category": "finance | art", "display_category": "财经 | 艺术"}
# 辅助函数,从 choices 里解析出对应的值:
def get_display_value(post, field='category'):
# model = post.__class__.model
# choices = ...
# [c[1] c for c in choices if c[0] === getattr(post, field')][0]
# 进一步优化的话,可以写个 decorator 完成转换工作:
@
display_fields('category')
def list_post(request, response):
# 原来的逻辑
# 以上伪代码未考虑错误处理,请自行完善。