django xadmin 導入功能添加


參考網址: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM