溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Django怎么獲取model中的字段名和字段的verbose_name

發(fā)布時(shí)間:2020-07-23 14:27:37 來(lái)源:億速云 閱讀:505 作者:小豬 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了Django怎么獲取model中的字段名和字段的verbose_name,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

定義模型:

class Game(models.Model): 
  name = models.CharField(u'游戲名稱(chēng)',max_length=30) 
  gameid = models.CharField(u'游戲id',max_length=20) 
  def __str__(self): 
    return self.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('字段類(lèi)型:',type(field).__name__)  #返回的是‘charfield','textfield',等這些類(lèi)型
  return field_dic

注:appname是model所在app的名字,modelname是model的名字

如果在view中執(zhí)行g(shù)et_model.filed('Game_app','Game'),那么field_dic結(jié)果為:

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

通過(guò)for循環(huán)輸入result內(nèi)容:

gameid : 游戲id
id : ID
name : 游戲名稱(chēng)

補(bǔ)充知識(shí):Django Forms組件 的參數(shù)配置案例 input樣式, 渲染的標(biāo)簽加class 錯(cuò)誤信息提示

Forms渲染出標(biāo)簽類(lèi)型

密碼型、文本型、郵箱型框

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()) 

渲染時(shí)添加屬性 class=''(便于bootstrap)

from django.forms import widgets

'''在widgets.類(lèi)型(加入字典形式的標(biāo)簽信息)'''

class UserForm(forms.Form):
 # 模式:普通文本 標(biāo)簽加上:class="form-control"
 name = forms.CharField(widget=widgets.TextInput(attrs={'class': 'form-control'})) 
 
 # 模式:密碼模式 標(biāo)簽加上:class="form-control"
 pwd = forms.CharField(widget=widgets.PasswordInput(
 attrs={'class': 'form-control'}
 )) 

渲染自定義錯(cuò)誤提示

視圖

from django.forms import widgets
'''追加error_messages參數(shù) dict型式'''

class UserForm(forms.Form):

 # 模式:required=不能為空的提示
 name = forms.CharField(min_length=4, label='姓名:', 
    error_messages={
                     'title': {'required': '不能為空哦親親'},
          'price': {'invalid': '格式錯(cuò)誤(提示方法)'},
          # '字段': {'錯(cuò)誤類(lèi)型': '提示信息'}
             }) 
 
 # 模式:invalid=格式錯(cuò)誤
 pwd = forms.CharField(min_length=4, label='密碼:',
    error_messages={
                     'title': {'required': '不能為空哦親親'},
          'price': {'invalid': '格式錯(cuò)誤(提示方法)'},
          # '字段': {'錯(cuò)誤類(lèi)型': '提示信息'}
             }) 

HTML展示錯(cuò)誤信息

 <form action="" method="post" novalidate="novalidate"> 
 <!--要自定義提示必須 novalidate="novalidate"-->
 
   {% csrf_token %}
   {% for field in form %}
     <p>
       {{ field.label }}{{ field }} <span>{{ field.errors.0 }}</span>
       <!--錯(cuò)誤信息固定:field.errors.0 -->
     </p>
   {% endfor %}
   <p><input type="submit" value="提交"></p>
 </form>

看完上述內(nèi)容,是不是對(duì)Django怎么獲取model中的字段名和字段的verbose_name有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI