You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DRF使用source映射字段时,如何获取正确的模型字段label?

解决DRF序列化器使用source时label不继承模型verbose_name的问题

当手动定义序列化字段并通过source映射到模型字段时,DRF不会自动继承模型字段的verbose_name作为别名字段的label,而是会把字段名(如secondField)自动转换为"Secondfield"作为默认值。要解决这个问题,你可以显式指定label参数,直接复用模型字段的verbose_name。

解决方案代码示例

from django.db import models
from rest_framework import serializers

class MyModel(models.Model):
    field1 = models.TextField(verbose_name="Field 1")
    field2 = models.TextField(verbose_name="Field 2")

class MySerializer(serializers.ModelSerializer):
    # 显式指定label为模型field2的verbose_name
    secondField = serializers.CharField(
        source='field2',
        label=MyModel._meta.get_field('field2').verbose_name
    )

    class Meta:
        model = MyModel
        fields = ('field1', 'secondField')

原理说明

通过MyModel._meta.get_field('field2').verbose_name可以直接获取模型中定义的verbose_name值,将其赋值给序列化字段的label参数后,OPTIONS请求返回的元信息里,secondField的label就会显示为模型中设置的"Field 2",同时GET请求的返回逻辑不受任何影响。

内容的提问来源于stack exchange,提问作者Bohdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:37:29