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

在Django REST Framework中如何将主键等数值字段转为字符串格式返回

Django REST Framework 数值字段转字符串输出解决方案

你可以通过以下两种常用方式实现id、age字段输出为字符串格式的需求:

方法1:序列化器显式指定字段类型(最推荐)

在对应模型的序列化器中,将id和age字段显式声明为serializers.CharField,DRF会自动将数值类型转换为字符串输出,示例代码如下:

from rest_framework import serializers
from .models import User # 替换为你自己的用户模型导入路径

class UserSerializer(serializers.ModelSerializer):
    # read_only=True 表示该字段仅用于响应输出,不接收请求传入的修改
    id = serializers.CharField(read_only=True)
    age = serializers.CharField(read_only=True)

    class Meta:
        model = User
        fields = ["id", "phone", "first_name", "birthdate", "age", "email"]

方法2:重写to_representation方法(适合复杂转换场景)

如果你不想修改字段原有的读写逻辑,仅在输出响应时做类型转换,可以重写序列化器的to_representation方法:

from rest_framework import serializers
from .models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ["id", "phone", "first_name", "birthdate", "age", "email"]

    def to_representation(self, instance):
        data = super().to_representation(instance)
        # 手动将两个字段转为字符串
        data["id"] = str(data["id"])
        data["age"] = str(data["age"])
        return data

两种方法修改完成后,你接口返回的Detail字段内的id和age就会以字符串格式输出,和你期望的响应结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:24:03