周一了,就不长篇大论了,给大家分享一个很实用的知识点,希望大家周末过得开心,愉快,诗和远方在等着你们。而我还在苦逼的撸代码,只为了应付眼前的苟且!

model.UserInfo._meta.app_label                       
#获取该类所在app的app名称

model.UserInfo._meta.model_name
#获取该类对应表名(字符串类型)

model.UserInfo._meta.get_field('username')
#获取该类内指定字段信息(对象)

model.UserInfo._meta.fields
#获取该类内所有字段对象

model.UserInfo._meta.get_fields
#获取该类内所有字段信息(对象),包含反向关联的字段

model.UserInfo._meta.many_to_many
#获取该类内多对多字段信息
        
model.UserInfo._meta.get_field('username').verbose_name
#获取该类内‘username’字段,verbose_name 的值

--------
  Book:
  list_filter=["state","publish","authors"]
  
  每一个字段相关信息:
   
       字段字符串  : "state"
       字段对象    : Book._meta.get_field("state")
       字段关联数据: 
              if---choice类型字段:
                    字段对象.choices
                    
              if---ForeignKey,ManytoMany:
                    字段对象.rel.to.objects.all()
       

  字段信息封装成类:
  
     class FilterField(object):
           def __init__(self,filter_field_name,filter_field_obj):
               self.filter_field_name=filter_field_name
               self.filter_field_obj=filter_field_obj

               
           def get_data(self):
               if isinstance(self.filter_field_obj,ForeignKey) or isinstance(self.filter_field_obj,ManyToManyField):
                   return self.filter_field_obj.rel.to.objects.all()
               elif self.filter_field_obj.choices:
                   return self.filter_field_obj.choices
               else:
                   pass
       
       
       state=FilterField("state",state_obj)

obj = models.UserInfo.objects.create(...)

#源码位置
#from django.db.models.options import Options
#from django.db.models.fields.reverse_related import ManyToOneRel

field = obj._meta.related_objects[0]
#拿到当前记录对象所对应的反向关联字段的queryset

print(field[0].limit_choices_to)
#拿到对应的limit_choices_to的字典的数据

print(field[0].related_name)
#拿到related_name属性所对应的值

print(field[0].field_name)
#拿到反向关联字段里的关联本表的字段

print(field[0].field.model._meta.model_name)
#拿到反向关联字段所在类名称


识别图中二维码,领取python全套视频资料

Django中_Meta 部分用法的更多相关文章

  1. Django中模板的用法简介

    1. 模板系统的介绍 Django作为一个Web框架,其模板所需的HTML输出静态部分以及动态内容插入 模板由HTML代码和逻辑控制代码构成 Django框架的模板语言的语法格式: {{var_nam ...

  2. django中tag的用法

    在app里建一个子的python包,包含__init__.py,包名为templatetags,里面新建一个tags.py(这个名字可以随意) from django import templater ...

  3. Django 中form的用法

    form的主要作用:1.在html中生成表单框架,2.验证数据(实话实说,很简洁,但不实用,灵活性差) from django.db import models # Create your model ...

  4. django中're_path'的用法

    1.re_path和path的作用是一样的.只不过're_path'是在写url的时候可以用正则表达式,功能更加强大.2.写正则表达式都推荐使用原生字符串.也就是以‘r’开头的字符串:r'move/' ...

  5. django中request相关用法

    URL相关信息: HttpRquest对象包含当前请求url的一些信息,通过这些信息,你可以获得正在访问这个页面的用户,或者使用的浏览器: request.path :除域名以外的请求路径,以正斜杠开 ...

  6. django中itsdangerous的用法

    itsdangerous用来解决什么问题,为什么需要用到itsdangerous? 安装命令:pip install itsdangerous 有时候你想向不可信的环境发送一些数据,但如何安全完成这个 ...

  7. Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法

    Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...

  8. Django中的信号及其用法

    Django中提供了"信号调度",用于在框架执行操作时解耦. 一些动作发生的时候,系统会根据信号定义的函数执行相应的操作 Django中内置的signal Model_signal ...

  9. Django中的session于cookie的用法

    1.cookies 1.django 中使用 cookies 1.设置cookies的值(将数据保存到客户端) 语法: 响应对象.set_cookie(key,value,expires) key:c ...

随机推荐

  1. hive 用户订单行为 基础操作

    今天用hive查询用户日志表.这是日志表的格式: user_id,item_id,cat_id,merchant_id,brand_id,month,day,action,age_range,gend ...

  2. MySql(一):linux 安装mysql数据库——yum安装法

    mysql数据库有多种安装方式,本文只介绍在Linux服务器上最实用.最快捷的mysql server安装方法.一.Linux服务器yum安装(CentOS6.3 64位)所有在服务器上执行的命令,都 ...

  3. Java配置文件读取和路径设置

    记录几种读取配置文件的方法,以及配置文件的放置路径. 1.使用PropertiesLoaderUtils工具类(springframework包提供) 优点:实时加载配置文件,修改后立即生效,不必重启 ...

  4. docker的使用02

    自定义容器名称: docker run --name -i -t ubuntu /bin/bash docker ps -a 数据卷的使用 数据卷其实就是容器和宿主机目录之间的映射. 具体实现: su ...

  5. mysql workbench 将查询结果导出 sql 文件

    之前一直使用的是plsql,因为换了家公司所以改成mysql了,我使用的时候mysql免费的客户端工具 workbench, 因为之前没用过,所以有很多功能找不到. 这里将用到的功能记录一下: 1:将 ...

  6. hadoop_百科

    一.发音是:[hædu:p]. 二.简介:Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储 ...

  7. hdu1018 Big Number 斯特林公式 求N!的位数。

    Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  8. virtualbox 扩容

    http://www.cnblogs.com/xueweihan/p/5923937.html#1

  9. thinkphp 跨模块调用

    5.13 跨模块调用   在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用,我们还可以了解到A和R两个快捷方法的使用.例如,我们在Index模块调用User模块的操作方法 c ...

  10. ubuntu 中wget (下载)命令用法

    Linux wget是一个下载文件的工具,它用在命令行下. 对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器 1.使用wget下载单个文件 ...