diff --git a/apps/inm/views.py b/apps/inm/views.py index ebf966e1..b0926bc6 100644 --- a/apps/inm/views.py +++ b/apps/inm/views.py @@ -394,8 +394,16 @@ class MIOItemViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyMode return super().list(request, *args, **kwargs) def perform_create(self, serializer): - serializer.validated_data["mio"] = MIOViewSet.lock_and_check_can_update(serializer.validated_data['mio']) - return super().perform_create(serializer) + if isinstance(serializer.validated_data, list): + mio_cache = {} + for item in serializer.validated_data: + mio = item['mio'] + if mio.id not in mio_cache: + mio_cache[mio.id] = MIOViewSet.lock_and_check_can_update(mio) + item['mio'] = mio_cache[mio.id] + else: + serializer.validated_data["mio"] = MIOViewSet.lock_and_check_can_update(serializer.validated_data['mio']) + return super().perform_create(serializer) def perform_destroy(self, instance): MIOViewSet.lock_and_check_can_update(instance.mio)