获取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 单位

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Django ,模型字段verbose_name 默认会被转换为大写。要取消这个自动转换,可以在字段定义时使用 `verbose_name_plural = "YourName"` 代替 `verbose_name = "YourName"`. ### 回答2: 在 Django ,当我们创建一个模型类时,如果没有为字段设置 `verbose_name` 属性,Django 会自动将字段名称转换为大写并作为 `verbose_name` 的值。如果我们希望取消自动转大写,我们可以手动设置 `verbose_name` 的值为字段的原始名称,即取消自动转大写的功能。 例如,假设我们有一个名为 `user` 的模型类,并且其有一个字段为 `username`。如果我们没有设置 `verbose_name` 属性,Django 在创建数据表时会将字段名称转换为大写作为字段的标签。这意味着 `username` 字段的标签将会显示为 "USERNAME"。如果想要保持字段的原始名称不变,我们可以手动设置 `verbose_name` 属性为 "username",这样字段的标签就会显示为 "username"。 我们可以在模型类的字段定义直接设置 `verbose_name` 属性,如下所示: ```python from django.db import models class User(models.Model): username = models.CharField(max_length=50, verbose_name='username') ``` 上述代码,我们为 `username` 字段设置了 `verbose_name` 属性,并将其值设为了 'username'。这样,在 Django 管理界面或其他地方显示该字段标签时,都会按照我们设置的 `verbose_name` 值来显示,而不会再自动转为大写。 总之,要取消 Django `verbose_name` 自动转大写的功能,只需要手动设置 `verbose_name` 属性为字段的原始名称即可。 ### 回答3: 在Djangoverbose_name是用于指定模型字段的人类可读名称。默认情况下,Django会自动将verbose_name转换为大写形式进行显示。如果你想取消这种自动转大写的功能,可以通过两种方式来实现。 第一种方式是在定义模型字段时,直接将verbose_name参数设置为你想要显示的名称。例如,在一个名为"Book"的模型,有一个字段名为"title",你可以这样定义这个字段: ``` title = models.CharField(verbose_name="书名", max_length=100) ``` 通过设置verbose_name参数,可以确保该字段verbose_name显示为"书名",而不是默认的"TITLE"。 第二种方式是在模型的内部Meta类,通过设置verbose_name属性来取消自动转大写的功能。例如,在模型定义一个名为"Book"的类,你可以这样设置Meta类: ``` class Book(models.Model): title = models.CharField(max_length=100) class Meta: verbose_name = "书名" ``` 通过设置Meta类的verbose_name属性,可以确保该模型的verbose_name显示为"书名",而不是默认的"BOOK"。 无论你选择哪种方式,取消自动转大写的功能都可以根据你的需求来进行定制化显示模型字段的人类可读名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值