码迷,mamicode.com
首页 > Windows程序 > 详细

django-Model _meta API

时间:2018-08-07 15:17:14      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:date   entry   block   gen   iter   包含   cti   访问   通过   

 

一:Model _meta API

  模型_metaAPI是Django ORM的核心。它使系统的其他部分(如查询,查询,表单和管理员)了解每个模型的功能。

  API可以通过_meta每个模型类的属性来访问,这是一个django.db.models.options.Options对象的一个实例 。

  它提供的方法可以用来:

  • 检索模型的所有字段实例
  • 按名称检索模型的单个字段实例

二:Model _meta常用方式

  1)按名称检索模型的单个字段实例

    Options.get_fieldfield_name[source]  ,回给定字段名称的字段实例。

    field_name可以是模型上字段的名称,抽象或继承模型上的字段,或指向模型的另一个模型上定义的字段。

    在后一种情况下,field_name 将由related_name用户定义或由Django本身自动生成的名称。

    Hidden fields 不能被名字检索。

    如果没有找到具有给定名称的字段, FieldDoesNotExist则会引发异常

技术分享图片
技术分享图片
>>> from django.contrib.auth.models import User

# A field on the model
>>> User._meta.get_field(username)
<django.db.models.fields.CharField: username>

# A field from another model that has a relation with the current model
>>> User._meta.get_field(logentry)
<ManyToOneRel: admin.logentry>

# A non existent field
>>> User._meta.get_field(does_not_exist)
Traceback (most recent call last):
    ...
FieldDoesNotExist: User has no field named does_not_exist
技术分享图片

2)检索模型的所有字段实例

    Options.get_fieldsinclude_parents = Trueinclude_hidden = False[source] 

返回与模型关联的字段的元组。get_fields()接受可以用来控制返回哪些字段的两个参数:

include_parents
True默认。递归地包含在父类上定义的字段。如果设置为Falseget_fields()只会搜索直接在当前模型上声明的字段。直接从抽象模型或代理类继承的模型中的字段被认为是本地的,而不是父类。
include_hidden
False默认。如果设置为Trueget_fields()将包含用于支持其他字段功能的字段。这也将包括任何有一个related_name(如ManyToManyField,或 ForeignKey)以“+”开头的字段。
技术分享图片
技术分享图片
>>> from django.contrib.auth.models import User
>>> 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>)
技术分享图片

 

django-Model _meta API

标签:date   entry   block   gen   iter   包含   cti   访问   通过   

原文地址:https://www.cnblogs.com/louzi/p/9436596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!