Model._meta API是Django ORM的核心,它使得lookups、queries、forms、admin这些模块通过每个model类的_meta的属性可以了解每个model的情况。

1. 字段访问API,使用名字检索一个model的字段实例

Options.get_field(field_name)

根据给出的field_name返回一个字段实例。field_name可以是model中的字段,抽象或者继承model的字段,或者指向一个model的另一个model上的字段,最后这种情况中的field_name是用户定义的related_name或者是Django自动产生的名字。

note:隐藏的字段不能通过名字检索。如果给出的字段名找不到,会抛出FieldDoesNotExist的错误。

  1.  
    >>> from django.contrib.auth.models import User
  2.  
     
  3.  
    # A field on the model
  4.  
    >>> User._meta.get_field('username')
  5.  
    <django.db.models.fields.CharField: username>
  6.  
     
  7.  
    # A field from another model that has a relation with the current model
  8.  
    >>> User._meta.get_field('logentry')
  9.  
    <ManyToOneRel: admin.logentry>
  10.  
     
  11.  
    # A non existent field
  12.  
    >>> User._meta.get_field('does_not_exist')
  13.  
    Traceback (most recent call last):
  14.  
    ...
  15.  
    FieldDoesNotExist: User has no field named 'does_not_exist'

2. 检索一个model的所有字段实例
Options.get_fields(include_parents=True, include_hidden=False)

以元组的形式返回一个model的相关的所有字段。get_fields接收两个参数用来控制要返回哪些字段。

  1.  
    >>> from django.contrib.auth.models import User
  2.  
    >>> User._meta.get_fields()
  3.  
    (<ManyToOneRel: admin.logentry>,
  4.  
    <django.db.models.fields.AutoField: id>,
  5.  
    <django.db.models.fields.CharField: password>,
  6.  
    <django.db.models.fields.DateTimeField: last_login>,
  7.  
    <django.db.models.fields.BooleanField: is_superuser>,
  8.  
    <django.db.models.fields.CharField: username>,
  9.  
    <django.db.models.fields.CharField: first_name>,
  10.  
    <django.db.models.fields.CharField: last_name>,
  11.  
    <django.db.models.fields.EmailField: email>,
  12.  
    <django.db.models.fields.BooleanField: is_staff>,
  13.  
    <django.db.models.fields.BooleanField: is_active>,
  14.  
    <django.db.models.fields.DateTimeField: date_joined>,
  15.  
    <django.db.models.fields.related.ManyToManyField: groups>,
  16.  
    <django.db.models.fields.related.ManyToManyField: user_permissions>)

原文链接:https://docs.djangoproject.com/en/2.0/ref/models/meta/

Django Model._meta API的更多相关文章

  1. Django Model field reference

    ===================== Model field reference ===================== .. module:: django.db.models.field ...

  2. 42)django-Model _meta API

    一:Model _meta API 模型_metaAPI是Django ORM的核心.它使系统的其他部分(如查询,查询,表单和管理员)了解每个模型的功能. API可以通过_meta每个模型类的属性来访 ...

  3. Django Model 定义语法

    简单用法 from django.db import models class Person(models.Model): first_name = models.CharField(max_leng ...

  4. 模型 _meta API ( options )

    模型 _meta API class Options[源代码] 模型 _meta API是Django ORM的核心.它使系统的其他部分(如查找,查询,表单和管理员)能够了解每个模型的功能. API可 ...

  5. 【转】Django Model field reference学习总结

    Django Model field reference学习总结(一) 本文档包含所有字段选项(field options)的内部细节和Django已经提供的field types. Field 选项 ...

  6. tornado with MySQL, torndb, django model, SQLAlchemy ==> JSON dumped

    现在,我们用torndo做web开发框架,用他内部机制来处理HTTP请求.传说中的非阻塞式服务. 整来整去,可谓之一波三折.可是,无论怎么样,算是被我做成功了. 在tornado服务上,采用三种数据库 ...

  7. Django编写RESTful API(一):序列化

    欢迎访问我的个人网站:www.comingnext.cn 关于RESTful API 现在,在开发的过程中,我们经常会听到前后端分离这个技术名词,顾名思义,就是前台的开发和后台的开发分离开.这个技术方 ...

  8. Django编写RESTful API(四):认证和权限

    欢迎访问我的个人网站:www.comingnext.cn 前言: 按照前面几篇文章里那样做,使用Django编写RESTful API的基本功能已经像模像样了.我们可以通过不同的URL访问到不同的资源 ...

  9. Django学习之四:Django Model模块

    目录 Django Model 模型 MODEL需要在脑子里记住的基础概念 区分清楚,必须不能混淆的 class Meta 内嵌元数据定义类 简单model创建实例 数据源配置 接着通过models在 ...

随机推荐

  1. Java体验的重点难点-----总结

    1.关于JVM原理:http://www.cnblogs.com/zhanglei93/p/6590609.html 2.关于垃圾收集机制:http://www.cnblogs.com/zhangle ...

  2. python的面向对象-面向对象设计

    1.面向对象设计 def school(name,addr,type):#定义一个大函数的作用就是不能让狗调用学校的方法 #学校动作 def kaoshi(school): print("[ ...

  3. MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot)

    MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是快照卷 如上图所示,原卷和快照卷可以不一样大,因为 ...

  4. protobuf与json相互转换的方法

    google的protobuf对象转json,不能直接使用FastJson之类的工具进行转换,原因是protobuf生成对象的get方法,返回的类型有byte[],而只有String类型可以作为jso ...

  5. bzoj千题计划211:bzoj1996: [Hnoi2010]chorus 合唱队

    http://www.lydsy.com/JudgeOnline/problem.php?id=1996 f[i][j][0/1] 表示已经排出队形中的[i,j],最后一个插入的人在[i,j]的i或j ...

  6. Mac下安装zsh(Oh My ZSH)的shell,替代原有的bash

    说明:一开始装zsh我是拒绝的,因为这个东西装简单,卸载很难,并且装了之后默认Shell的配置文件不能用了,比如~/.bashrc这些.所以在装的时候要再三考虑好! 官网:http://ohmyz.s ...

  7. Asp.net 子web application的Session共享

    需求提出: 网站: 父Web Application: http://www.test.com/ 子Web Application 1: http://www.test.com/child1 子Web ...

  8. PHP删除数组中空值

    array_filter   函数的功能是利用回调函数来对数组进行过滤,一直都以为用回调函数才能处理, 却没有发现手册下面还有一句,如果没有回调函数,那么默认就是删除数组中值为false的项目 代码: ...

  9. CSS3 响应式布局: @media (min/max-width:***) @font-face

    响应式布局 responsive design @media 属性 bootstrap  css 分析: @media (min-width:768px){ body{***} } use @medi ...

  10. [转]GCC系列: __attribute__((visibility("")))

    在 objc-api.h 里面有很多关于__attribute__ 的定义. 例如 #if !defined(OBJC_VISIBLE) # if TARGET_OS_WIN32 # if defin ...