_Meta 部分用法 _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)
#拿到反向关联字段所在类名称
 
 
  • 相关阅读:
    oracle中varchar2和nvarchar2的区别
    Hbuilder与夜神连接
    BUILD 2015: Visual Studio对GitHub的支持
    Visual Studio Developer Assistant 3月新功能展示
    Visual Studio 发布新版API智能提示
    微软发布手机版 Sample Browser。7000多示例代码一手掌握
    微软 PowerShell Script Explorer 满血复活,正式发布
    IBM的“认知计算时代”
    最新 Windows 10 应用项目模板发布
    Windows 10四大版本区别详解:家庭版, 专业版, 企业版和教育版
  • 原文地址:https://www.cnblogs.com/Zhao--C/p/10042946.html
  • 走看看 - 开发者的网上家园
    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)
    #拿到反向关联字段所在类名称