mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +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']
|
||||
|
||||
bom_items = []
|
||||
|
||||
try:
|
||||
with transaction.atomic():
|
||||
|
||||
for item in items:
|
||||
for item in items:
|
||||
|
||||
part = item['part']
|
||||
sub_part = item['sub_part']
|
||||
part = item['part']
|
||||
sub_part = item['sub_part']
|
||||
|
||||
# Ignore duplicate BOM items
|
||||
if BomItem.objects.filter(part=part, sub_part=sub_part).exists():
|
||||
continue
|
||||
# Ignore duplicate BOM items
|
||||
if BomItem.objects.filter(part=part, sub_part=sub_part).exists():
|
||||
continue
|
||||
|
||||
# Create a new BomItem object
|
||||
BomItem.objects.create(**item)
|
||||
bom_items.append(
|
||||
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:
|
||||
raise serializers.ValidationError(detail=serializers.as_serializer_error(e))
|
||||
|
Loading…
Reference in New Issue
Block a user