mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-06 23:38:48 +00:00
Improved BOM import process (#5698)
- Prevent issues due to query within @atomic block - Speed up import using bulk_create
This commit is contained in:
parent
814322e512
commit
598f0a5021
@ -1573,20 +1573,26 @@ class BomImportSubmitSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
items = data['items']
|
items = data['items']
|
||||||
|
|
||||||
|
bom_items = []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with transaction.atomic():
|
|
||||||
|
|
||||||
for item in items:
|
for item in items:
|
||||||
|
|
||||||
part = item['part']
|
part = item['part']
|
||||||
sub_part = item['sub_part']
|
sub_part = item['sub_part']
|
||||||
|
|
||||||
# Ignore duplicate BOM items
|
# Ignore duplicate BOM items
|
||||||
if BomItem.objects.filter(part=part, sub_part=sub_part).exists():
|
if BomItem.objects.filter(part=part, sub_part=sub_part).exists():
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Create a new BomItem object
|
bom_items.append(
|
||||||
BomItem.objects.create(**item)
|
BomItem(**item)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(bom_items) > 0:
|
||||||
|
logger.info("Importing %s BOM items", len(bom_items))
|
||||||
|
BomItem.objects.bulk_create(bom_items)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise serializers.ValidationError(detail=serializers.as_serializer_error(e))
|
raise serializers.ValidationError(detail=serializers.as_serializer_error(e))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user