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

  • 文章
  • 作者:Hubery
  • 发布时间:2019-05-30
  • 阅读数:3893
  • 分类:Django
  • 标签: Django

  • 直接使用模型对象获取

# 主要是obj._meta.fields 获取模型字段的对象
params = [f for f in ModelClass._meta.fields]
msg_list = [(msg.name, msg.verbose_name) for msg in params]
  • 示例

# 示例 model.py
class UserModel(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, null=True, default='', verbose_name='科室')
    u_password = models.CharField(max_length=128, verbose_name='密码')
    u_email = models.CharField(max_length=36, null=True, default='', verbose_name='邮箱')
    u_tel = models.CharField(max_length=12, null=True, default='', verbose_name='电话')
    u_token = models.CharField(max_length=128, null=True, default='', verbose_name='单终端登录')

    class Meta:
        db_table = 'user'
# test.py
import os
import sys

import django

sys.path.append(os.path.dirname(os.path.abspath(__file__)))  # 填写项目路径
os.environ.update({"DJANGO_SETTINGS_MODULE": "CDSS.settings"})

django.setup()

from User.models import UserModel

params = [f for f in UserModel._meta.fields]
msg_list = [(msg.name, msg.verbose_name) for msg in params]

for i in msg_list:
    print(i)
# 打印结果
"""
('id', 'ID')
('nickname', '用户名')
('u_name', '真实姓名')
('u_room', '科室')
('u_password', '密码')
('u_email', '邮箱')
('u_tel', '电话')
('u_token', '单终端登录')
"""
  • 调用函数

from django.apps import apps
def ge_tmodel_field(appname, modelname, exclude):
    """
    获取model的verbose_name和name的字段, exclude 过滤掉的字段
    """
    model_obj = apps.get_model(appname, modelname)
    filed = model_obj._meta.fields
    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
# 示例
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': '用户名'}
"""

    这个功能主要用在数据导出,需要知道数据库中某个表字段和字段的含义。

评论列表
优秀的你不评论一下咩!!
新的评论