zoukankan      html  css  js  c++  java
  • _Meta 部分用法

    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)
    #拿到反向关联字段所在类名称
    
  • 相关阅读:
    Hibernate二 配置
    Hibernate学习笔记一 理解
    使用Oracle的logminer工具进行日志挖掘
    确定系统中的字节序是大端字节序还是小端字节序。
    linux下oracle对参数要求的解释
    SnapAssure备份恢复(从文件系统到ASM实例)
    oracle的增量检查点
    C# 的三种序列化方法
    C#引用C++的DLL时C#和C++的数据类型对照表
    asp.net通过基类实现统一脚本和样式的管理
  • 原文地址:https://www.cnblogs.com/iyouyue/p/8611925.html
Copyright © 2011-2022 走看看