Django 如何获取 Model 字段列表?

简介: 在平时的开发过程中,避免不了需要获取 Model 中的字段列表。

在平时的开发过程中,避免不了需要获取 Model 中的字段列表。

那需要把所有字段都再复制一份吗?这样的话就太麻烦了,而且后期也不好维护。

其实,Django 内置了一个方法,可以很轻松解决这个问题。

下面以 User 表举一个例子。

>>>fromdjango.contrib.auth.modelsimportUser>>>User._meta.get_fields()
(<ManyToOneRel: admin.logentry>, <django.db.models.fields.AutoField: id>, <django.db.models.fields.CharField: password>, <django.db.models.fields.DateTimeField: last_login>, <django.db.models.fields.BooleanField: is_superuser>, <django.db.models.fields.CharField: username>, <django.db.models.fields.CharField: first_name>, <django.db.models.fields.CharField: last_name>, <django.db.models.fields.EmailField: email>, <django.db.models.fields.BooleanField: is_staff>, <django.db.models.fields.BooleanField: is_active>, <django.db.models.fields.DateTimeField: date_joined>, <django.db.models.fields.related.ManyToManyField: groups>, <django.db.models.fields.related.ManyToManyField: user_permissions>)

通过 get_fields() 方法会返回一个 tuple,每个元素都是 model field 类型。

这个结果并不是我们想要的,我们需要的是字段名称列表。只需要对每个 field 字段取 name 属性就可以了。

>>> [field.nameforfieldinUser._meta.get_fields()]
['logentry', 'id', 'password', 'last_login', 'is_superuser', 'username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined', 'groups', 'user_permissions']

这样就可以了。

接下来,我们将其抽象出一个函数,这样如果有需要直接调用就可以了。

defget_model_fields(model):
fields= [field.nameforfieldinmodel._meta.get_fields()]
returnfields

以上就是本文的全部内容,如果觉得还不错的话,欢迎点赞转发关注,感谢支持。


推荐阅读:

  • 计算机经典书籍
  • 技术博客 硬核后端开发技术干货,内容包括 Python、Django、Docker、Go、Redis、ElasticSearch、Kafka、Linux 等。
  • Go 程序员 Go 学习路线图,包括基础专栏,进阶专栏,源码阅读,实战开发,面试刷题,必读书单等一系列资源。
  • 面试题汇总 包括 Python、Go、Redis、MySQL、Kafka、数据结构、算法、编程、网络等各种常考题。
目录
相关文章
|
3月前
|
存储 安全 网络协议
Python 教程之 Django(9)对模型中的字段进行验证
Python 教程之 Django(9)对模型中的字段进行验证
30 0
Python 教程之 Django(9)对模型中的字段进行验证
|
4月前
|
存储 数据库 Python
Python 教程之 Django(9)对模型中的字段进行验证
Python 教程之 Django(9)对模型中的字段进行验证
37 0
|
4月前
|
Shell 数据库 Python
列表视图——基于函数的视图 Django
列表视图——基于函数的视图 Django
23 0
|
8月前
|
数据库 Python
[Python]Django模型(Model)(二)
[Python]Django模型(Model)(二)
|
8月前
|
设计模式 SQL 数据库
|
9月前
|
存储 前端开发 数据库
【Django学习】(十)模型序列化器_关联字段序列化
【Django学习】(十)模型序列化器_关联字段序列化
【Django学习】(十)模型序列化器_关联字段序列化
|
9月前
|
Python
【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类
【Django学习】(九)自定义校验器_单字段_多字段校验_模型序列化器类
|
9月前
|
Python
django model进阶学习
django model进阶学习
31 0
|
10月前
|
存储 关系型数据库 MySQL
Django第2步_创建model数据库表
Django第2步_创建model数据库表
83 0
|
数据库 Python
Django model 层之事务管理总结
Django model 层之事务管理总结
76 0