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

如何获取Django模型中自动生成字段的列表?

Django模型自动生成字段的获取方法

Django没有提供公开的内置函数直接返回所有自动生成字段的列表(你提到的_get_auto_generated_fields()属于内部私有方法,不建议依赖),但可以通过模型的_meta属性结合字段的内置属性来筛选。

核心判断依据

每个模型字段都带有auto_created属性,Django用它标记该字段是否由框架自动生成,而非用户显式定义。

具体实现示例

  1. 获取所有自动生成字段(包含反向关联、多对多中间字段)
auto_generated_fields = [field for field in MyModel._meta.get_fields() if field.auto_created]
  1. 仅获取数据库中实际存在的具体自动生成字段(排除反向关联这类虚拟字段)
concrete_auto_fields = [
    field for field in MyModel._meta.get_fields() 
    if field.auto_created and field.concrete
]

补充说明

  • 自动生成字段的典型场景:模型未显式指定主键时Django自动添加的id字段(AutoField/BigAutoField)、多对多关系的中间表字段、外键的反向关联字段等。
  • 不要使用_meta._get_auto_generated_fields()这类私有方法,它们不属于公开API,Django版本迭代时可能被修改或移除,会导致代码兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:45:34