zoukankan      html  css  js  c++  java
  • 获取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 单位
  • 相关阅读:
    Rust v1.39发布
    Theory of Storage
    What is Market Intelligence and how is it Used?
    敏感性分析与风险分析
    四大交易所重磅齐发布!涉及股指期权上市、市场体系创新、优化期权做市商机制等等
    库存+基差+跨期套利的交易策略
    大宗商品贸易模式及风险识别——基于贸易融资方式、真实贸易资金需求等视角
    CME Futures & Options Order Book
    什么是期货跟单?什么是期货跟单系统?
    ScrollReveal-元素随页面滚动产生动画的js插件
  • 原文地址:https://www.cnblogs.com/zhaoyingjie/p/6484482.html
Copyright © 2011-2022 走看看