From 5cc9596c77586d6c03feed49c8a5dd804fdee5e1 Mon Sep 17 00:00:00 2001 From: chuanwei <463266963@qq.com> Date: Wed, 31 Aug 2022 03:04:44 +0000 Subject: [PATCH] =?UTF-8?q?update=20backend/dvadmin/utils/import=5Fexport?= =?UTF-8?q?=5Fmixin.py.=201)=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=85=A5=E6=95=B0?= =?UTF-8?q?=E6=8D=AEele.attname=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98=202)?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=95=B0=E6=8D=AE=E6=94=AF=E6=8C=81=E8=81=94?= =?UTF-8?q?=E5=90=88=E4=B8=BB=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chuanwei <463266963@qq.com> --- backend/dvadmin/utils/import_export_mixin.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/dvadmin/utils/import_export_mixin.py b/backend/dvadmin/utils/import_export_mixin.py index 1a35e34..baa3ca6 100644 --- a/backend/dvadmin/utils/import_export_mixin.py +++ b/backend/dvadmin/utils/import_export_mixin.py @@ -121,17 +121,20 @@ class ImportSerializerMixin: queryset = self.filter_queryset(self.get_queryset()) # 获取多对多字段 m2m_fields = [ - ele.attname + ele.name for ele in queryset.model._meta.get_fields() if hasattr(ele, "many_to_many") and ele.many_to_many == True ] data = import_to_data(request.data.get("url"), self.import_field_dict, m2m_fields) unique_list = [ - ele.attname for ele in queryset.model._meta.get_fields() if hasattr(ele, "unique") and ele.unique == True + ele.name for ele in queryset.model._meta.get_fields() if hasattr(ele, "unique") and ele.unique == True ] for ele in data: # 获取 unique 字段 - filter_dic = {i: ele.get(i) for i in list(set(self.import_field_dict.keys()) & set(unique_list))} + if queryset.model._meta.unique_together: # 判断是否存在联合主键 + filter_dic = {i: ele.get(i) for i in list(queryset.model._meta.unique_together[0])} + else: + filter_dic = {i: ele.get(i) for i in list(set(self.import_field_dict.keys()) & set(unique_list))} instance = filter_dic and queryset.filter(**filter_dic).first() if instance and not updateSupport: continue