获取Django中model字段名 字段的verbose_name

obj._meta.fields 为关键 obj为model类

 

推荐使用函数

 

 

复制代码
from django.apps import apps

def getmodelfield(appname,modelname,exclude):
    """
    获取model的verbose_name和name的字段
    """
    modelobj = apps.get_model(appname, modelname)
    filed = modelobj._meta.fields
    print(filed)
    fielddic = {}

    params = [f for f in filed if f.name not in exclude]

    for i in params:
        fielddic[i.name] = i.verbose_name
    return fielddic
exclude
= ['username','email','is_staff','last_login','password','last_name','date_joined','is_active','is_superuser'] cs = getmodelfield('users', 'UserProfile',exclude) #输出结果为: {'active': 'active', 'registration_number': '工商注册号', 'contact_person': '联系人', 'company_person': '单位法人', 'education': '学历', 'gender': 'gender', 'id': 'ID', 'address': '地址', 'first_name': <django.utils.functional.lazy.<locals>.__proxy__ object at 0x7fe70c6a77b8>, 'title': '职称', 'company_type': '单位类型', 'introduction': '简介', 'project_role': '项目角色', 'gcp': 'gcp', 'department': '部门', 'realname': '姓名', 'company': '单位', 'mobile': '电话'}
复制代码

 

 

 

 

 

 

定义model类型

 

复制代码
class UserMessage(models.Model):
    """
    用户信息表
    """

    user = models.ForeignKey(User,verbose_name='用户名')
    study_number = models.IntegerField(default='', verbose_name='研究编号')
    study_name = models.CharField(max_length=50, default='',verbose_name='研究名称')
    study_disease = models.CharField(max_length=20, default='',verbose_name='研究疾病')
    study_medicine = models.CharField(max_length=25, default='',verbose_name='研究药物/器械')
    responsible_person = models.CharField(max_length=10, default='',verbose_name='负责人')
    start_time = models.DateField(null=True,blank=True, verbose_name='开始时间')
    end_time = models.DateField(null=True,blank=True, verbose_name='创建时间')
    article = models.CharField(max_length=20, default='', verbose_name='文章发表情况')
    influence = models.CharField(max_length=20, default='', verbose_name='影响因子')
    funds = models.CharField(max_length=30, default='', verbose_name='经费来源')
    pay = models.CharField(max_length=100,default='', verbose_name='费用')
    util = models.CharField(max_length=5, default='', verbose_name='单位')
    add_time = models.DateField(auto_now_add=True, verbose_name='添加时间')
复制代码

 

 

填写View视图,输出model的name以及verbose_name

    exclude_fields = ('user', 'add_time')
    params = [f for f in UserMessage._meta.fields if f.name not in exclude_fields]
    print (params)
    for msg in params:
        print(msg.name,msg.verbose_name)

 

结果如下

复制代码
id ID
study_number 研究编号
study_name 研究名称
study_disease 研究疾病
study_medicine 研究药物/器械
responsible_person 负责人
start_time 开始时间
end_time 创建时间
article 文章发表情况
influence 影响因子
funds 经费来源
pay 费用
util 单位
复制代码

 

posted on   星河赵  阅读(21010)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示