直接使用模型对象获取
#主要是obj._meta.fields获取模型字段的对象
params=[fforfinModelClass._meta.fields]
msg_list=[(msg.name,msg.verbose_name)formsginparams]示例
#示例model.py
classUserModel(models.Model):
nickname=models.CharField(max_length=24,unique=True,verbose_name='用户名')
u_name=models.CharField(max_length=12,null=True,default='',verbose_name='真实姓名')
u_room=models.CharField(max_length=24,verbose_name='科室')
u_password=models.CharField(max_length=128,verbose_name='密码')
u_email=models.CharField(max_length=36,verbose_name='邮箱')
u_tel=models.CharField(max_length=12,verbose_name='电话')
u_token=models.CharField(max_length=128,verbose_name='单终端登录')
classMeta:
db_table='user'#test.py
importos
importsys
importdjango
sys.path.append(os.path.dirname(os.path.abspath(__file__)))#填写项目路径
os.environ.update({"DJANGO_SETTINGS_MODULE":"CDSS.settings"})
django.setup()
fromUser.modelsimportUserModel
params=[fforfinUserModel._meta.fields]
msg_list=[(msg.name,msg.verbose_name)formsginparams]
foriinmsg_list:
print(i)
#打印结果
"""
('id','ID')
('nickname','用户名')
('u_name','真实姓名')
('u_room','科室')
('u_password','密码')
('u_email','邮箱')
('u_tel','电话')
('u_token','单终端登录')
"""调用函数
fromdjango.appsimportapps
defge_tmodel_field(appname,modelname,exclude):
"""
获取model的verbose_name和name的字段,exclude过滤掉的字段
"""
model_obj=apps.get_model(appname,modelname)
filed=model_obj._meta.fields
fielddic={}
params=[fforfinfilediff.namenotinexclude]
foriinparams:
fielddic[i.name]=i.verbose_name
returnfielddic#示例
filed_dict=ge_tmodel_field('User','UserModel',exclude=[])
print(filed_dict)
#打印结果
'"""
{'id':'ID','u_name':'真实姓名','u_tel':'电话','u_email':'邮箱',
'u_token':'单终端登录','u_password':'密码','u_room':'科室',
'nickname':'用户名'}
""" 这个功能主要用在数据导出,需要知道数据库中某个表字段和字段的含义。
网友评论