diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index 737f60f7fa..7c6b9c6bac 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -109,12 +109,6 @@ class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBar self.validate_reference_field(self.reference) self.reference_int = self.rebuild_reference_field(self.reference) - # Prevent changing target part after creation - if self.has_field_changed('part'): - raise ValidationError({ - 'part': _('Build order part cannot be changed') - }) - try: super().save(*args, **kwargs) except InvalidMove: @@ -122,6 +116,17 @@ class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBar 'parent': _('Invalid choice for parent build'), }) + def clean(self): + """Validate the BuildOrder model""" + + super().clean() + + # Prevent changing target part after creation + if self.has_field_changed('part'): + raise ValidationError({ + 'part': _('Build order part cannot be changed') + }) + @staticmethod def filterByDate(queryset, min_date, max_date): """Filter by 'minimum and maximum date range'. diff --git a/InvenTree/build/test_build.py b/InvenTree/build/test_build.py index d8300d0958..0961e0329d 100644 --- a/InvenTree/build/test_build.py +++ b/InvenTree/build/test_build.py @@ -491,7 +491,7 @@ class BuildTest(BuildTestBase): # Should not be able to change the part after the Build is saved with self.assertRaises(ValidationError): bo.part = assembly_2 - bo.save() + bo.clean() def test_cancel(self): """Test cancellation of the build"""