• Django Model._meta API


    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/

     

  • 相关阅读:
    手机电池mAh和Wh概念
    运行中的iOS应用创建的文件们
    iOS分辨率的那些事儿
    为什么判断UITextField判断为空不能用isEqualToString:@""
    iOS开发里的Bundle是个啥玩意?!
    XCode里的模拟器到底在哪里?我的App被放到哪里了?
    iOS推送消息报错误“Domain=NSCocoaErrorDomain Code=3000”的可能问题
    让你的WordPress支持嵌入ObjectiveC代码
    升级 Mountain Lion 后,svn服务无法使用的解决方法
    对于javascript的词法作用域的思考
  • 原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/9574624.html
Copyright © 2020-2023  润新知