參考網址:https://www.cnblogs.com/yjlch1016/archive/2019/08/18/11373785.html
https://www.cnblogs.com/yjlch1016/p/11373785.html
1.安裝:pip install django-import-export #一般已經安裝
2.配置settings.py文件,在INSTALLED_APPS中加入'import_export',放在xadmin之后
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'xadmin', # 注冊xadmin 'crispy_forms', # 注冊xadmin的依賴應用crispy_forms 'users.apps.UsersConfig', #注冊user 'testdatas.apps.TestdatasConfig', #注冊testdatas 'reportdatas.apps.ReportdatasConfig', #注冊reportdatas 'testapidatas.apps.TestapidatasConfig',#注冊testapidatas 'reportpageloadtime.apps.ReportpageloadtimeConfig',#注冊testapidatas 'dependallshow.apps.DependallshowConfig',#注冊dependallshow 'testupdatadb.apps.TestupdatadbConfig',#注冊testupdatadb 'shangbaoshuju.apps.ShangbaoshujuConfig', #注冊shangbaoshuju 'spiderdata.apps.SpiderdataConfig', # 注冊spiderdata 'shucaiyidate.apps.ShucaiyidateConfig', #注冊shucaiyidate 'debug_toolbar', # 注冊debug_toolbar,放在django.contrib.staticfiles后面 'import_export', #導入導出,放在xadmin之后 ]
3.配置settings.py文件,加上“IMPORT_EXPORT_USE_TRANSACTIONS = True”一行
IMPORT_EXPORT_USE_TRANSACTIONS = True # 在導入數據時使用數據庫事務,默認False
4.python manage.py collectstatic 收集靜態資源,在靜態資源目錄下會有“import_export”:
STATIC_ROOT = os.path.join(BASE_DIR, 'staticall') #靜態資源目錄配置
5.xadmin注冊:先注冊VSixXieYiDuiZhaoResources,然后再用
import_export_args = {
'import_resource_class': VSixXieYiDuiZhaoResources,
}# 配置導入按鈕
進行使用:
import xadmin from .modelsv6xieyi import VSixXieYiDuiZhao #使用import_export 中的resources from import_export import resources class VSixXieYiDuiZhaoResources(resources.ModelResource): class Meta: model = VSixXieYiDuiZhao skip_unchanged = True # 導入數據時,如果該條數據未修改過,則會忽略 report_skipped = True # 在導入預覽頁面中顯示跳過的記錄 import_id_fields = ('id',) # 對象標識的默認字段是id,您可以選擇在導入時設置哪些字段用作id # import_id_fields = ('v6_xiyihao',) # 對象標識的默認字段是id,您可以選擇在導入時設置哪些字段用作id fields = ( 'v6_xiyihao', 'v6_jianceleixing', 'v6_yiqifenlei', 'v6_zhenglihouxieyimingcheng', 'v6_yuanxieyimingcheng', 'v6_syybxydcjyqxh', 'v6_status', 'v6_yuanshucaiyiduiyingxieyihao', 'v6_shujuzhiling', 'v6_zhuangtaicanshuzhiling', 'v6_chuchangshengjibao', 'v6_shifoucaijizhuangtai', 'v6_yijifenlei', 'v6_shiyongquyu', 'v6_jiekouleixing', 'v6_chengxuleixing', 'v6_kaifaren', 'v6_ceshiren', 'v6_xiugaineirong', 'v6_erjinzhimingcheng', 'v6_teshupeizhiwenjian', 'v6_guidangshijian', 'v6_guidangren', )# 白名單 exclude = ( 'write_user', 'add_time', 'update_time', )# 黑名單 #V6協議對照 class VSixXieYiDuiZhaoXadmin(object): all_zi_duan = ["id", "add_time", "update_time"] list_display = ['v6_xiyihao', 'v6_jianceleixing', 'v6_yiqifenlei', 'v6_zhenglihouxieyimingcheng', 'v6_yuanxieyimingcheng', 'v6_syybxydcjyqxh', 'v6_status', 'v6_yuanshucaiyiduiyingxieyihao', 'v6_shujuzhiling', 'v6_zhuangtaicanshuzhiling', 'v6_chuchangshengjibao', 'v6_shifoucaijizhuangtai', 'v6_yijifenlei', 'v6_shiyongquyu', 'v6_jiekouleixing', 'v6_chengxuleixing', 'v6_kaifaren', 'v6_ceshiren', 'v6_xiugaineirong', 'v6_erjinzhimingcheng', 'v6_teshupeizhiwenjian', 'v6_guidangshijian', 'v6_guidangren'] # 定義顯示的字段 list_filter = ['v6_xiyihao', 'v6_jianceleixing', 'v6_yiqifenlei', 'v6_zhenglihouxieyimingcheng', 'v6_yuanxieyimingcheng', 'v6_syybxydcjyqxh', 'v6_status', 'v6_yuanshucaiyiduiyingxieyihao', 'v6_shujuzhiling', 'v6_zhuangtaicanshuzhiling', 'v6_chuchangshengjibao', 'v6_shifoucaijizhuangtai', 'v6_yijifenlei', 'v6_shiyongquyu', 'v6_jiekouleixing', 'v6_chengxuleixing', 'v6_kaifaren', 'v6_ceshiren', 'v6_xiugaineirong', 'v6_erjinzhimingcheng', 'v6_teshupeizhiwenjian', 'v6_guidangshijian', 'v6_guidangren']# 定義篩選的字段 search_fields = ['v6_xiyihao', 'v6_jianceleixing', 'v6_yiqifenlei', 'v6_zhenglihouxieyimingcheng', 'v6_yuanxieyimingcheng', 'v6_syybxydcjyqxh', 'v6_status', 'v6_yuanshucaiyiduiyingxieyihao', 'v6_shujuzhiling', 'v6_zhuangtaicanshuzhiling', 'v6_chuchangshengjibao', 'v6_shifoucaijizhuangtai', 'v6_yijifenlei', 'v6_shiyongquyu', 'v6_jiekouleixing', 'v6_chengxuleixing', 'v6_kaifaren', 'v6_ceshiren', 'v6_xiugaineirong', 'v6_erjinzhimingcheng', 'v6_teshupeizhiwenjian', 'v6_guidangshijian', 'v6_guidangren']# 定義搜索字段 model_icon = "fa fa-file-text" # 定義圖標顯示 ordering = ["-add_time"] # 添加默認排序規則顯示排序,根據添加時間倒序排序 # readonly_fields = ['write_user','add_time','update_time'] # 設置某些字段為只為可讀 #設置了readonly_fields,再設置exclude,exclude對該字段無效, # exclude = ['case_step'] # 設置某些字段為不顯示,即隱藏 #readonly_fields和exclude設置會有沖突 # inlines = [TestCaseInline] # inlines配和TestCaseInline使用,可以直接在項目頁面添加測試用例#只能做一層嵌套,不能進行兩層嵌套 list_editable = all_zi_duan # 可以在列表頁對字段進行編輯 refresh_times = [3, 5] # 對列表頁進行定時刷新,配置了3秒和5秒,可以從中選擇一個 list_per_page = 10 # 每頁設置10條數據,默認每頁展示100條數據 # fk_fields = ['test_project_id',] #設置顯示外鍵字段,未生效 list_display_links = ["v6_xiyihao", ] # 設置點擊鏈接進入編輯頁面的字段 # date_hierarchy = 'add_time' #詳細時間分層篩選,未生效 show_detail_fields = ["v6_xiyihao", ] # 顯示數據詳情 list_export = ('xls',) # 控制列表頁導出數據的可選格式 show_bookmarks = True # 控制是否顯示書簽功能 # 設置是否加入導入插件 # import_excel = True # True表示顯示使用插件,False表示不顯示使用插件,該import_excel變量會覆蓋插件中的變量 import_export_args = { 'import_resource_class': VSixXieYiDuiZhaoResources, # 'export_resource_class': ProductInfoResource, }# 配置導入按鈕 xadmin.site.register(VSixXieYiDuiZhao,VSixXieYiDuiZhaoXadmin) #在xadmin中注冊VSixXieYiDuiZhao
6.
以上這樣有個弊病:
Excel文件列名與導入預覽頁面列名都是字段英文名稱而不是verbose_name中文名稱很不方便,並且會報錯
7.修改優化后的代碼:
app應用為"shucaiyidata",模塊名為"VSixXieYiDuiZhao":
import xadmin from .modelsv6xieyi import VSixXieYiDuiZhao #使用import_export 中的resources from import_export import resources #導入resources from django.apps import apps #導入apps class VSixXieYiDuiZhaoResources(resources.ModelResource): def __init__(self): super(VSixXieYiDuiZhaoResources, self).__init__() #自調用 field_list = apps.get_model('shucaiyidate', 'VSixXieYiDuiZhao')._meta.fields # 應用名與模型名 self.verbose_name_dict = {} # 獲取所有字段的verbose_name並存放在verbose_name_dict字典里 for i in field_list: self.verbose_name_dict[i.name] = i.verbose_name def get_export_fields(self): fields = self.get_fields() # 默認導入導出field的column_name為字段的名稱 # 這里修改為字段的verbose_name for field in fields: field_name = self.get_field_name(field) if field_name in self.verbose_name_dict.keys(): field.column_name = self.verbose_name_dict[field_name] # 如果設置過verbose_name,則將column_name替換為verbose_name # 否則維持原有的字段名 return fields class Meta: model = VSixXieYiDuiZhao skip_unchanged = True # 導入數據時,如果該條數據未修改過,則會忽略 report_skipped = True # 在導入預覽頁面中顯示跳過的記錄 # import_id_fields = ('id',) # 對象標識的默認字段是id,您可以選擇在導入時設置哪些字段用作id import_id_fields = ('v6_xiyihao',) # 對象標識的默認字段是id,您可以選擇在導入時設置哪些字段用作id fields = ( 'v6_xiyihao', 'v6_jianceleixing', 'v6_yiqifenlei', 'v6_zhenglihouxieyimingcheng', 'v6_yuanxieyimingcheng', 'v6_syybxydcjyqxh', 'v6_status', 'v6_yuanshucaiyiduiyingxieyihao', 'v6_shujuzhiling', 'v6_zhuangtaicanshuzhiling', 'v6_chuchangshengjibao', 'v6_shifoucaijizhuangtai', 'v6_yijifenlei', 'v6_shiyongquyu', 'v6_jiekouleixing', 'v6_chengxuleixing', 'v6_kaifaren', 'v6_ceshiren', 'v6_xiugaineirong', 'v6_erjinzhimingcheng', 'v6_teshupeizhiwenjian', 'v6_guidangshijian', 'v6_guidangren', )# 白名單 exclude = ( 'write_user', 'add_time', 'update_time', )# 黑名單 # V6協議對照 class VSixXieYiDuiZhaoXadmin(object): all_zi_duan = ["id", "add_time", "update_time"] list_display = ['v6_xiyihao', 'v6_jianceleixing', 'v6_yiqifenlei', 'v6_zhenglihouxieyimingcheng', 'v6_yuanxieyimingcheng', 'v6_syybxydcjyqxh', 'v6_status', 'v6_yuanshucaiyiduiyingxieyihao', 'v6_shujuzhiling', 'v6_zhuangtaicanshuzhiling', 'v6_chuchangshengjibao', 'v6_shifoucaijizhuangtai', 'v6_yijifenlei', 'v6_shiyongquyu', 'v6_jiekouleixing', 'v6_chengxuleixing', 'v6_kaifaren', 'v6_ceshiren', 'v6_xiugaineirong', 'v6_erjinzhimingcheng', 'v6_teshupeizhiwenjian', 'v6_guidangshijian', 'v6_guidangren'] # 定義顯示的字段 list_filter = ['v6_xiyihao', 'v6_jianceleixing', 'v6_yiqifenlei', 'v6_zhenglihouxieyimingcheng', 'v6_yuanxieyimingcheng', 'v6_syybxydcjyqxh', 'v6_status', 'v6_yuanshucaiyiduiyingxieyihao', 'v6_shujuzhiling', 'v6_zhuangtaicanshuzhiling', 'v6_chuchangshengjibao', 'v6_shifoucaijizhuangtai', 'v6_yijifenlei', 'v6_shiyongquyu', 'v6_jiekouleixing', 'v6_chengxuleixing', 'v6_kaifaren', 'v6_ceshiren', 'v6_xiugaineirong', 'v6_erjinzhimingcheng', 'v6_teshupeizhiwenjian', 'v6_guidangshijian', 'v6_guidangren']# 定義篩選的字段 search_fields = ['v6_xiyihao', 'v6_jianceleixing', 'v6_yiqifenlei', 'v6_zhenglihouxieyimingcheng', 'v6_yuanxieyimingcheng', 'v6_syybxydcjyqxh', 'v6_status', 'v6_yuanshucaiyiduiyingxieyihao', 'v6_shujuzhiling', 'v6_zhuangtaicanshuzhiling', 'v6_chuchangshengjibao', 'v6_shifoucaijizhuangtai', 'v6_yijifenlei', 'v6_shiyongquyu', 'v6_jiekouleixing', 'v6_chengxuleixing', 'v6_kaifaren', 'v6_ceshiren', 'v6_xiugaineirong', 'v6_erjinzhimingcheng', 'v6_teshupeizhiwenjian', 'v6_guidangshijian', 'v6_guidangren']# 定義搜索字段 model_icon = "fa fa-file-text" # 定義圖標顯示 ordering = ["-add_time"] # 添加默認排序規則顯示排序,根據添加時間倒序排序 # readonly_fields = ['write_user','add_time','update_time'] # 設置某些字段為只為可讀 #設置了readonly_fields,再設置exclude,exclude對該字段無效, # exclude = ['case_step'] # 設置某些字段為不顯示,即隱藏 #readonly_fields和exclude設置會有沖突 # inlines = [TestCaseInline] # inlines配和TestCaseInline使用,可以直接在項目頁面添加測試用例#只能做一層嵌套,不能進行兩層嵌套 list_editable = all_zi_duan # 可以在列表頁對字段進行編輯 refresh_times = [3, 5] # 對列表頁進行定時刷新,配置了3秒和5秒,可以從中選擇一個 list_per_page = 10 # 每頁設置10條數據,默認每頁展示100條數據 # fk_fields = ['test_project_id',] #設置顯示外鍵字段,未生效 list_display_links = ["v6_xiyihao", ] # 設置點擊鏈接進入編輯頁面的字段 # date_hierarchy = 'add_time' #詳細時間分層篩選,未生效 show_detail_fields = ["v6_xiyihao", ] # 顯示數據詳情 list_export = ('xls',) # 控制列表頁導出數據的可選格式 show_bookmarks = True # 控制是否顯示書簽功能 # 設置是否加入導入插件 # import_excel = True # True表示顯示使用插件,False表示不顯示使用插件,該import_excel變量會覆蓋插件中的變量 import_export_args = { 'import_resource_class': VSixXieYiDuiZhaoResources, # 'export_resource_class': ProductInfoResource, }# 配置導入按鈕 #可以根據是否為超級用戶,設置某些字段為可讀,即超級管理員可以進行編輯,而普通用戶不可以進行編輯的字段設置 def get_readonly_fields(self): fields = [] if self.request.user.is_superuser: # fields = ['write_user','add_time', 'update_time'] return fields else: fields = ['write_user','add_time','update_time'] #例如,用戶,超級管理員可以分配用戶,而普通不可以編輯用戶 return fields def instance_forms(self): # 需要重寫instance_forms方法,此方法作用是生成表單實例 super().instance_forms() # 判斷是否為新建操作,新建操作才會設置write_user的默認值 if not self.org_obj: self.form_obj.initial['write_user'] = self.request.user.id #post處理導入數據 def post(self, request, *args, **kwargs): # 重載post函數,用於判斷導入的邏輯 if 'excel' in request.FILES: # 如果excel在request.FILES中 excel_file = request.FILES.get('excel', '') import xlrd # 導入xlrd # 常用的Excel文件有.xls和.xls兩種,.xls文件讀取時需要設置formatting_info = True # data = xlrd.open_workbook(filename=None, file_contents=excel_file.read()) # xlsx文件 exceldata = xlrd.open_workbook(filename=None, file_contents=excel_file.read(), formatting_info=True) # xls文件 from .analyzexls import Analyzexls analyzexls = Analyzexls() # 將獲取的數據循環導入數據庫中 all_list_1 = analyzexls.get_sheets_mg(exceldata, 0) i = 0 if len(all_list_1[0]) >= 23: #如果大於等於23列 while i < len(all_list_1): v6_xiyihao = all_list_1[i][0] v6_jianceleixing = all_list_1[i][1] v6_yiqifenlei = all_list_1[i][2] v6_zhenglihouxieyimingcheng = all_list_1[i][3] v6_yuanxieyimingcheng = all_list_1[i][4] v6_syybxydcjyqxh = all_list_1[i][5] v6_status = all_list_1[i][6] v6_yuanshucaiyiduiyingxieyihao = all_list_1[i][7] v6_shujuzhiling = all_list_1[i][8] v6_zhuangtaicanshuzhiling = all_list_1[i][9] v6_chuchangshengjibao = all_list_1[i][10] v6_shifoucaijizhuangtai = all_list_1[i][11] v6_yijifenlei = all_list_1[i][12] v6_shiyongquyu = all_list_1[i][13] v6_jiekouleixing = all_list_1[i][14] v6_chengxuleixing = all_list_1[i][15] v6_kaifaren = all_list_1[i][16] v6_ceshiren = all_list_1[i][17] v6_xiugaineirong = all_list_1[i][18] v6_erjinzhimingcheng = all_list_1[i][19] v6_teshupeizhiwenjian = all_list_1[i][20] v6_guidangshijian = all_list_1[i][21] v6_guidangren = all_list_1[i][22] print("歸當時間:") print(v6_guidangshijian) if v6_xiyihao == None: print("表格中第%s行的協議號為空,此行不進行數據錄入" % str(i + 2)) else: v6_xiyihao = str(v6_xiyihao).strip() if "." in v6_xiyihao: # 如果點在協議號中說明協議號為數據型存在小數點 v6_xiyihao = v6_xiyihao.split(".")[0] else: v6_xiyihao = v6_xiyihao if v6_guidangshijian == None: #如果歸檔時間為None,則直接賦值 v6_guidangshijian = v6_guidangshijian else: v6_guidangshijian = str(v6_guidangshijian).strip() if "." in v6_guidangshijian: # 如果點在協議號中說明協議號為數據型存在小數點 v6_guidangshijian = v6_guidangshijian.split(".")[0] v6_guidangshijian_len = len(v6_guidangshijian) if v6_guidangshijian_len ==5: #5位數字時間戳 v6_guidangshijian = analyzexls.get_data_from_excel_riqi_wenben(v6_guidangshijian) else: v6_guidangshijian = v6_guidangshijian else: v6_guidangshijian = v6_guidangshijian if v6_yuanshucaiyiduiyingxieyihao == None: #如果為None,直接賦值 v6_yuanshucaiyiduiyingxieyihao = v6_yuanshucaiyiduiyingxieyihao else: v6_yuanshucaiyiduiyingxieyihao = str(v6_yuanshucaiyiduiyingxieyihao).strip() if "." in v6_yuanshucaiyiduiyingxieyihao: # 如果點在協議號中說明協議號為數據型存在小數點 v6_yuanshucaiyiduiyingxieyihao = v6_yuanshucaiyiduiyingxieyihao.split(".")[0] else: v6_yuanshucaiyiduiyingxieyihao = v6_yuanshucaiyiduiyingxieyihao old_vsixxieyiduizhao_count = VSixXieYiDuiZhao.objects.filter(v6_xiyihao=v6_xiyihao).\ filter(v6_jianceleixing=v6_jianceleixing).filter(v6_yiqifenlei=v6_yiqifenlei).\ filter(v6_zhenglihouxieyimingcheng=v6_zhenglihouxieyimingcheng).filter(v6_yuanxieyimingcheng=v6_yuanxieyimingcheng).\ filter(v6_syybxydcjyqxh=v6_syybxydcjyqxh).filter(v6_status=v6_status).\ filter(v6_yuanshucaiyiduiyingxieyihao=v6_yuanshucaiyiduiyingxieyihao).filter(v6_shujuzhiling=v6_shujuzhiling).\ filter(v6_zhuangtaicanshuzhiling=v6_zhuangtaicanshuzhiling).filter(v6_chuchangshengjibao=v6_chuchangshengjibao).\ filter(v6_shifoucaijizhuangtai=v6_shifoucaijizhuangtai).filter(v6_yijifenlei=v6_yijifenlei).\ filter(v6_shiyongquyu=v6_shiyongquyu).filter(v6_jiekouleixing=v6_jiekouleixing).\ filter(v6_chengxuleixing=v6_chengxuleixing).filter(v6_kaifaren=v6_kaifaren).\ filter(v6_ceshiren=v6_ceshiren).filter(v6_xiugaineirong=v6_xiugaineirong).\ filter(v6_erjinzhimingcheng=v6_erjinzhimingcheng).filter(v6_teshupeizhiwenjian=v6_teshupeizhiwenjian).\ filter(v6_guidangshijian=v6_guidangshijian).filter(v6_guidangren=v6_guidangren).count() if old_vsixxieyiduizhao_count == 0: #如果不存在則可能進行導入 #只進行因子判斷 yingzi_vsixxieyiduizhao_count = VSixXieYiDuiZhao.objects.filter(v6_xiyihao=v6_xiyihao).count() if yingzi_vsixxieyiduizhao_count>=1: #如果大於等於1,則只修改第一條數據 vsixxieyiduizhao = VSixXieYiDuiZhao.objects.filter(v6_xiyihao=v6_xiyihao).first() vsixxieyiduizhao.v6_xiyihao = v6_xiyihao vsixxieyiduizhao.v6_jianceleixing = v6_jianceleixing vsixxieyiduizhao.v6_yiqifenlei = v6_yiqifenlei vsixxieyiduizhao.v6_zhenglihouxieyimingcheng = v6_zhenglihouxieyimingcheng vsixxieyiduizhao.v6_yuanxieyimingcheng = v6_yuanxieyimingcheng vsixxieyiduizhao.v6_syybxydcjyqxh = v6_syybxydcjyqxh vsixxieyiduizhao.v6_status = v6_status vsixxieyiduizhao.v6_yuanshucaiyiduiyingxieyihao = v6_yuanshucaiyiduiyingxieyihao vsixxieyiduizhao.v6_shujuzhiling = v6_shujuzhiling vsixxieyiduizhao.v6_zhuangtaicanshuzhiling = v6_zhuangtaicanshuzhiling vsixxieyiduizhao.v6_chuchangshengjibao = v6_chuchangshengjibao vsixxieyiduizhao.v6_shifoucaijizhuangtai = v6_shifoucaijizhuangtai vsixxieyiduizhao.v6_yijifenlei = v6_yijifenlei vsixxieyiduizhao.v6_shiyongquyu = v6_shiyongquyu vsixxieyiduizhao.v6_jiekouleixing = v6_jiekouleixing vsixxieyiduizhao.v6_chengxuleixing = v6_chengxuleixing vsixxieyiduizhao.v6_kaifaren = v6_kaifaren vsixxieyiduizhao.v6_ceshiren = v6_ceshiren vsixxieyiduizhao.v6_xiugaineirong = v6_xiugaineirong vsixxieyiduizhao.v6_erjinzhimingcheng = v6_erjinzhimingcheng vsixxieyiduizhao.v6_teshupeizhiwenjian = v6_teshupeizhiwenjian vsixxieyiduizhao.v6_guidangshijian = v6_guidangshijian vsixxieyiduizhao.v6_guidangren = v6_guidangren # vsixxieyiduizhao.write_user_id = request.user.id vsixxieyiduizhao.save() # 保存到數據庫 print("修改ID為%s(表格為%s行),協議號為%s的數據"% (str(vsixxieyiduizhao.id),str(i + 2),str(vsixxieyiduizhao.v6_xiyihao))) else: print("錄入表格第%s行的協議號為%s的數據" % (str(i + 2),v6_xiyihao)) vsixxieyiduizhao = VSixXieYiDuiZhao() # 數據庫的對象等於ClickAndBack,實例化 vsixxieyiduizhao.v6_xiyihao = v6_xiyihao vsixxieyiduizhao.v6_jianceleixing = v6_jianceleixing vsixxieyiduizhao.v6_yiqifenlei = v6_yiqifenlei vsixxieyiduizhao.v6_zhenglihouxieyimingcheng = v6_zhenglihouxieyimingcheng vsixxieyiduizhao.v6_yuanxieyimingcheng = v6_yuanxieyimingcheng vsixxieyiduizhao.v6_syybxydcjyqxh = v6_syybxydcjyqxh vsixxieyiduizhao.v6_status = v6_status vsixxieyiduizhao.v6_yuanshucaiyiduiyingxieyihao = v6_yuanshucaiyiduiyingxieyihao vsixxieyiduizhao.v6_shujuzhiling = v6_shujuzhiling vsixxieyiduizhao.v6_zhuangtaicanshuzhiling = v6_zhuangtaicanshuzhiling vsixxieyiduizhao.v6_chuchangshengjibao = v6_chuchangshengjibao vsixxieyiduizhao.v6_shifoucaijizhuangtai = v6_shifoucaijizhuangtai vsixxieyiduizhao.v6_yijifenlei = v6_yijifenlei vsixxieyiduizhao.v6_shiyongquyu = v6_shiyongquyu vsixxieyiduizhao.v6_jiekouleixing = v6_jiekouleixing vsixxieyiduizhao.v6_chengxuleixing = v6_chengxuleixing vsixxieyiduizhao.v6_kaifaren = v6_kaifaren vsixxieyiduizhao.v6_ceshiren = v6_ceshiren vsixxieyiduizhao.v6_xiugaineirong = v6_xiugaineirong vsixxieyiduizhao.v6_erjinzhimingcheng = v6_erjinzhimingcheng vsixxieyiduizhao.v6_teshupeizhiwenjian = v6_teshupeizhiwenjian vsixxieyiduizhao.v6_guidangshijian = v6_guidangshijian vsixxieyiduizhao.v6_guidangren = v6_guidangren # vsixxieyiduizhao.write_user_id = request.user.id vsixxieyiduizhao.save() # 保存到數據庫 else: print("表格中第%s行的協議號為%s的數據已經存在,不進行數據錄入" % ((i + 2),v6_xiyihao)) i = i + 1 return super(VSixXieYiDuiZhaoXadmin,self).post(request,*args,**kwargs) # 必須調用VSixXieYiDuiZhaoXadmin父類,再調用post方法,否則會報錯 # 一定不要忘記,否則整個ClickAndBackXAdmin保存都會出錯 xadmin.site.register(VSixXieYiDuiZhao,VSixXieYiDuiZhaoXadmin) #在xadmin中注冊VSixXieYiDuiZhao