diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py index 71e385a6e..1985df2ac 100644 --- a/netbox/utilities/views.py +++ b/netbox/utilities/views.py @@ -329,13 +329,21 @@ class BulkAddView(View): new_objs = [] try: with transaction.atomic(): + # Validate and save each object individually for value in pattern: model_form_data[pattern_target] = value model_form = self.model_form(model_form_data) - obj = model_form.save() - new_objs.append(obj) - except ValidationError as e: - form.add_error(None, e) + if model_form.is_valid(): + obj = model_form.save() + new_objs.append(obj) + else: + for error in model_form.errors.as_data().values(): + form.add_error(None, error) + # Abort the creation of all objects if errors exist + if form.errors: + raise ValidationError("Validation of one or more model forms failed.") + except ValidationError: + pass if not form.errors: msg = u"Added {} {}".format(len(new_objs), model._meta.verbose_name_plural)