Django获取Model字段名及verbose_name的方法与Forms组件配置详解

月亮慢半拍
月亮慢半拍
发布时间:2026-10-13 | 3人浏览过
原创

本文介绍如何在Django中通过apps.get_model获取Model的字段名及verbose_name,并展示Forms组件中Widget参数配置、CSS类添加及自定义错误提示的实现方式,帮助开发者优化表单渲染与验证逻辑。

Django Model字段名与verbose_name获取方法

首先定义一个Django模型类,例如名为Game的模型,其中包含name和gameid两个CharField字段,并分别设置了verbose_name为'游戏名称'和'游戏id'。


class Game(models.Model): 
  name = models.CharField(u'游戏名称',max_length=30) 
  gameid = models.CharField(u'游戏id',max_length=20) 
  def __str__(self): 
    return self.name

接下来,通过Django提供的apps模块获取该模型对象,并遍历其_meta.fields属性,提取每个字段的name和verbose_name存入字典返回。


from django.apps import apps
 
def getmodelfield(appname,modelname):
  modelobj = apps.get_model(appname,modelname)
  field_dic={}
  for field in modelobj._meta.fields:
    field_dic[field.name] = field.verbose_name
    print('字段类型:',type(field).__name__)  #返回的是‘charfield','textfield',等这些类型
  return field_dic

注意:调用时需传入正确的appname(模型所在应用名)和modelname(模型类名)。

若在视图函数中调用get_model_field('Game_app', 'Game'),将返回包含字段名与中文名称的字典。

{'gameid': '\u6e38\u620fid', 'id': 'ID', 'name': '\u6e38\u620f\u540d\u79f0'}

可通过for循环遍历该字典,输出每个字段名及其对应的verbose_name。


gameid : 游戏id
id : ID
name : 游戏名称

Django Forms组件配置与错误提示处理

补充知识:Django Forms组件支持通过widgets参数配置输入框样式、添加CSS类及自定义错误提示信息。

Forms组件可渲染不同类型的输入标签,如文本框、密码框等。

例如,可配置为密码型或邮箱型输入框,以满足不同场景需求。


from django.forms import widgets

# 自定义格式方法
class UserForm(forms.Form):
 '''最小4位 且 模式:普通文本'''
 name = forms.CharField(min_length=4, label='姓名:',widget=widgets.TextInput()) 
 
 '''最小4位 且 模式:密码模式'''
 pwd = forms.CharField(min_length=4, label='密码:', widget=widgets.PasswordInput()) 

在渲染时,可通过widgets参数传入attrs字典,为生成的HTML标签添加class属性(如'form-control'),便于与Bootstrap等前端框架集成。


from django.forms import widgets

'''在widgets.类型(加入字典形式的标签信息)'''

class UserForm(forms.Form):
 # 模式:普通文本 标签加上:class="form-control"
 name = forms.CharField(widget=widgets.TextInput(attrs={'class': 'form-control'})) 
 
 # 模式:密码模式 标签加上:class="form-control"
 pwd = forms.CharField(widget=widgets.PasswordInput(
 attrs={'class': 'form-control'}
 )) 

可通过error_messages参数自定义字段验证失败时的错误提示信息。

在视图层,需实例化Form类并传递给模板,确保表单数据正确绑定。


from django.forms import widgets
'''追加error_messages参数 dict型式'''

class UserForm(forms.Form):

 # 模式:required=不能为空的提示
 name = forms.CharField(min_length=4, label='姓名:', 
    error_messages={
                     'title': {'required': '不能为空哦亲亲'},
          'price': {'invalid': '格式错误(提示方法)'},
          # '字段': {'错误类型': '提示信息'}
             }) 
 
 # 模式:invalid=格式错误
 pwd = forms.CharField(min_length=4, label='密码:',
    error_messages={
                     'title': {'required': '不能为空哦亲亲'},
          'price': {'invalid': '格式错误(提示方法)'},
          # '字段': {'错误类型': '提示信息'}
             }) 

在HTML模板中,可通过{{ field.errors.0 }}获取并展示每个字段的第一个错误信息。


 <form action="" method="post" novalidate="novalidate"> 
 <!--要自定义提示必须 novalidate="novalidate"-->
 
   {% csrf_token %}
   {% for field in form %}
     <p>
       {{ field.label }}{{ field }} <span>{{ field.errors.0 }}</span>
       <!--错误信息固定:field.errors.0 -->
     </p>
   {% endfor %}
   <p><input type="submit" value="提交"></p>
 </form>

以上即为Django获取Model字段名及verbose_name的完整方法,以及Forms组件中样式与错误提示的配置示例,供参考使用。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表