obj._meta.fields 爲關鍵 obj爲model類django
推薦使用函數app
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_namespa
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)
結果以下code
id ID study_number 研究編號 study_name 研究名稱 study_disease 研究疾病 study_medicine 研究藥物/器械 responsible_person 負責人 start_time 開始時間 end_time 建立時間 article 文章發表狀況 influence 影響因子 funds 經費來源 pay 費用 util 單位