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


    转自:https://www.cnblogs.com/zhaoyingjie/p/6484482.html

    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 单位
  • 相关阅读:
    十大排序算法
    SQL优化指南
    Python基础-类与对象
    Python基础-函数
    Python基础-字典
    Python基础-字符串
    Python基础-列表
    以太坊智能合约开发框架Truffle
    比特币钱包搭建与使用
    矩阵的压缩存储
  • 原文地址:https://www.cnblogs.com/eternal1025/p/9244069.html
Copyright © 2020-2023  润新知