From efb0b94c074d352107ef94a7801f9c69a0eff418 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:45:15 +1000 Subject: [PATCH] reset errors on update (#12550) (#12630) * reset errors on update * add empty line --------- (cherry picked from commit f5c4bbc6a8768af21f52d7fc1ae2664738cab648) Co-authored-by: ribsey Co-authored-by: Oliver --- src/backend/InvenTree/importer/serializers.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/backend/InvenTree/importer/serializers.py b/src/backend/InvenTree/importer/serializers.py index c738853e08..566322e310 100644 --- a/src/backend/InvenTree/importer/serializers.py +++ b/src/backend/InvenTree/importer/serializers.py @@ -180,6 +180,28 @@ class DataImportRowSerializer(InvenTreeModelSerializer): 'complete', ] + def update(self, instance, validated_data): + """Allow manual editing of extracted row data. + + This is used by the importer UI when a user manually corrects a row, + for example by selecting a missing foreign-key target. In that case, + the edited ``data`` payload must become the source of truth for + subsequent validation, rather than being silently ignored in favor of + the original ``row_data`` extracted from the import file. + """ + if 'data' in validated_data: + instance.data = validated_data['data'] + + # Clear stale validation state so the row is re-evaluated against + # the manually edited data on save() + instance.errors = None + + # A manually edited row is not yet committed, even if it had + # previously reached a completed state + instance.complete = False + + return super().update(instance, validated_data) + class DataImportAcceptRowSerializer(serializers.Serializer): """Serializer for accepting rows of data."""