diff --git a/import_export/admin.py b/import_export/admin.py index 8dcf8958f..d51221261 100644 --- a/import_export/admin.py +++ b/import_export/admin.py @@ -233,7 +233,7 @@ def generate_log_entries(self, result, request): } content_type_id = ContentType.objects.get_for_model(self.model).pk for row in result: - if row.import_type in logentry_map.keys(): + if row.import_type in logentry_map: with warnings.catch_warnings(): if django.VERSION >= (5,): from django.utils.deprecation import ( @@ -584,9 +584,10 @@ def _create_log_entries(self, user_pk, rows): RowResult.IMPORT_TYPE_UPDATE: CHANGE, RowResult.IMPORT_TYPE_DELETE: DELETION, } + missing = object() for import_type, instances in rows.items(): - if import_type in logentry_map.keys(): - action_flag = logentry_map[import_type] + action_flag = logentry_map.get(import_type, missing) + if action_flag is not missing: self._create_log_entry( user_pk, rows[import_type], import_type, action_flag ) diff --git a/import_export/declarative.py b/import_export/declarative.py index 86f9f6113..b69c73c26 100644 --- a/import_export/declarative.py +++ b/import_export/declarative.py @@ -107,7 +107,7 @@ def __new__(cls, name, bases, attrs): if opts.exclude and f.name in opts.exclude: continue - if f.name in set(declared_fields.keys()): + if f.name in declared_fields: # If model field is declared in `ModelResource`, # remove it from `declared_fields` # to keep exact order of model fields diff --git a/import_export/resources.py b/import_export/resources.py index 04364745f..40ffc231e 100644 --- a/import_export/resources.py +++ b/import_export/resources.py @@ -424,9 +424,11 @@ def import_field(self, field, instance, row, is_m2m=False, **kwargs): def get_import_fields(self): import_fields = [] + missing = object() for field_name in self.get_import_order(): - if field_name in self.fields: - import_fields.append(self.fields[field_name]) + field = self.fields.get(field_name, missing) + if field is not missing: + import_fields.append(field) continue # issue 1815 # allow for fields to be referenced by column_name in `fields` list @@ -1101,8 +1103,10 @@ def export(self, queryset=None, **kwargs): def _select_field(self, target_field_name): # select field from fields based on either declared name or column name - if target_field_name in self.fields: - return self.fields[target_field_name] + missing = object() + field = self.fields.get(target_field_name, missing) + if field is not missing: + return field for field_name, field in self.fields.items(): if target_field_name == field.column_name: