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

如何获取Django Serializer的字段名称列表?

获取Django REST Framework序列化器的字段名称列表

针对你的AccountSerializer,这里提供几种获取字段名称列表的有效方法:

方法1:实例化序列化器后获取(最通用)

这是最简单且适用于所有场景的方式,不管你在Meta里用的是fields列表、__all__还是exclude:

serializer = AccountSerializer()
field_names = list(serializer.fields.keys())
# 输出: ['id', 'account_holder', 'age', 'salary', 'age_score', 'salary_score']

serializer.fields是一个有序字典,包含序列化器所有的字段对象,它的keys()就是你需要的字段名称字符串列表。

方法2:正确调用get_field_names方法

你之前调用AccountSerializer.get_field_names()报错,是因为这是实例方法,需要传入self、declared_fields和info三个参数。正确的调用方式如下:

from rest_framework.serializers import ModelSerializer

# 获取序列化器的声明字段和元信息
declared_fields = AccountSerializer._declared_fields
info = ModelSerializer.serializer_class_info(AccountSerializer)

# 实例化序列化器后调用方法
serializer_instance = AccountSerializer()
field_names = serializer_instance.get_field_names(declared_fields, info)
# 输出同样的字段名称列表

不过这种方式相对繁琐,一般推荐用方法1。

方法3:直接读取Meta类的fields(仅适用于显式定义的情况)

如果你的序列化器Meta里明确列出了fields(像你例子里那样),可以直接读取这个属性:

field_names = list(AccountSerializer.Meta.fields)
# 输出: ['id', 'account_holder', 'age', 'salary', 'age_score', 'salary_score']

注意:如果fields设为__all__或者使用exclude来排除字段,这种方法就无法得到完整的字段列表,因为此时需要结合模型字段来解析,这时候还是用方法1更可靠。


内容的提问来源于stack exchange,提问作者Domenico Spidy Tamburro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:43:19