From 994e4d51344e5e4eb0164683d32d794b58631a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=BF=E5=B0=8F=E5=A4=A9?= <1638245306@qq.com> Date: Thu, 3 Nov 2022 23:52:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=98=E5=8C=96:=201?= =?UTF-8?q?=EF=BC=89=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=8A=A5attname=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=202=EF=BC=89=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=85=A5=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=AD=98=E5=9C=A8=E8=81=94=E5=90=88=E4=B8=BB=E9=94=AE?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 ea64ba6..f15e304 100644 --- a/backend/dvadmin/utils/import_export_mixin.py +++ b/backend/dvadmin/utils/import_export_mixin.py @@ -138,17 +138,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