update backend/dvadmin/utils/import_export_mixin.py.

1)修复导入数据ele.attname报错问题
2)导入数据支持联合主键

Signed-off-by: chuanwei <463266963@qq.com>
pull/71/head
chuanwei 2022-08-31 03:04:44 +00:00 committed by Gitee
parent 5f7799733d
commit 5cc9596c77
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 6 additions and 3 deletions

View File

@ -121,16 +121,19 @@ class ImportSerializerMixin:
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
# 获取多对多字段 # 获取多对多字段
m2m_fields = [ m2m_fields = [
ele.attname ele.name
for ele in queryset.model._meta.get_fields() for ele in queryset.model._meta.get_fields()
if hasattr(ele, "many_to_many") and ele.many_to_many == True 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) data = import_to_data(request.data.get("url"), self.import_field_dict, m2m_fields)
unique_list = [ 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: for ele in data:
# 获取 unique 字段 # 获取 unique 字段
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))} 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() instance = filter_dic and queryset.filter(**filter_dic).first()
if instance and not updateSupport: if instance and not updateSupport: