Django 如何获取 Model 字段列表?

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

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

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

下面以 User 表举一个例子。

>>> from django.contrib.auth.models import User
>>> User._meta.get_fields()
(, , , , , , , , , , , , , )

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

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

>>> [field.name for field in User._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']

这样就可以了。

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

def get_model_fields(model):
    fields = [field.name for field in model._meta.get_fields()]
    return fields

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

推荐阅读:

  • 计算机经典书籍
  • 技术博客 硬核后端开发技术干货,内容包括 Python、Django、Docker、Go、Redis、ElasticSearch、Kafka、Linux 等。
  • Go 程序员 Go 学习路线图,包括基础专栏,进阶专栏,源码阅读,实战开发,面试刷题,必读书单等一系列资源。
  • 面试题汇总 包括 Python、Go、Redis、MySQL、Kafka、数据结构、算法、编程、网络等各种常考题。

Original: https://www.cnblogs.com/alwaysbeta/p/16240439.html
Author: yongxinz
Title: Django 如何获取 Model 字段列表?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582726/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Jenkins发布SpringBoot项目

    第二步:Configure System (系统设置) 我们只需要设置最后面的一项,配置远程服务SSH: 配置完成后点击保存即可,为后面我们配置自动化部署做准备,配置如下图: 第三…

    Linux 2023年6月14日
    0105
  • Jstack排查线上CPU100%

    Jstack排查线上CPU100% 介绍 jstack是JVM自带的Java堆栈跟踪工具,用于生成java虚拟机当前时刻的线程快照,来帮助定位线程出现长时间停顿的原因,例如死锁、死…

    Linux 2023年6月6日
    0105
  • Mysql客户端的安装

    Mysql数据库(简称)属于C/S架构,正常工作中一般都会提供服务端,我们只需要安装客户端进行查询修改数据等操作即可。 正常工作中不管是测试人员或者开发人员,一般数据库的管理员(测…

    Linux 2023年6月14日
    086
  • 【原创】Linux中断子系统(四)-Workqueue

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年6月8日
    0103
  • 如何在 python 中解决 ImportError: DLL load failed while importing win32api

    问题描述 安装完 pywin32 之后,如果直接在代码中 import win32api 可能会报下述错误: ImportError: DLL load failed while …

    Linux 2023年6月7日
    086
  • Go语言中的零值坑记

    开箱即用 什么叫开箱即用呢?因为 Go语言的零值让程序变得更简单了,有些场景我们不需要显示初始化就可以直接用,举几个例子: 切片,他的零值是 nil,即使不用 make进行初始化也…

    Linux 2023年6月6日
    0119
  • 微服务的性能监控、压测和调优(转载自知乎:阿里自动化测试群)

    一、何为压力测试 性能压测是什么:就是考察当前 软件和 硬件环境下,系统所能承受的 &amp…

    Linux 2023年6月8日
    0111
  • 如何写出有效的单元测试

    测试不要名不副实避免测试的描述与测试内容不符;测试结果必须精准;测试该失败的时候一定要失败! 测试私有或者受保护的方法解决思路: 将方法变成公共方法; 将方法抽取到新类; 将方法变…

    Linux 2023年6月8日
    0104
  • 【深度学习】RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

    报错代码: if __name__ == ‘__main__’: model = Perception(2, 3, 2).cuda() input = torch.randn(4,…

    Linux 2023年6月13日
    092
  • Linux(进阶篇)

    一、进程 1 进程和内存管理 1.1 进程和线程的区别 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路…

    Linux 2023年6月7日
    091
  • 深入理解Java类加载机制,再也不用死记硬背了

    谈谈”会”的三个层次 在《说透分布式事务》中,我举例里说明了会与会的差别。对一门语言的学习,这里谈谈我理解的”会”的三个层次: 第一…

    Linux 2023年6月14日
    0101
  • Linux进程调度器

    完全公平调度器 用黑体标出的是文章的主线,未用黑体标出的内容是对黑体内容的解释或注解。 每次调用调度器时,它会挑选具有最高等待时间的进程,把CPU提供给该进程。如果经常发生这种情况…

    Linux 2023年6月13日
    087
  • 原码反码补码

    3.1 知识点补充 在计算机内部,所有信息都是用二进制数串的形式表示的。整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。无符号的整数用来表示0和正整数,即自然数;带符号…

    Linux 2023年6月13日
    0108
  • 数据分析业务知识

    1.电商和消费模型 所谓的电商和消费模型是以商品的交易、零售、购买搭建而起。包括客单价、复购率、回购率、退货率、购物篮大小、进销存等商品概念。 2.市场营销模型 市场营销模型是以传…

    Linux 2023年6月6日
    0122
  • Nginx进阶篇—web模块及proxy代理

    server { #在server{下面输入 sub_filter n…

    Linux 2023年6月6日
    082
  • 通过过滤器实现前后端分离的跨域问题

    跨域指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。在做前后端分离项目的时候就需要解决此问题。 创建过滤器解决跨域问…

    Linux 2023年6月7日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球