diff --git a/InvenTree/part/admin.py b/InvenTree/part/admin.py index 6f9d2369e5..fc5727bd9d 100644 --- a/InvenTree/part/admin.py +++ b/InvenTree/part/admin.py @@ -131,11 +131,13 @@ class BomItemResource(ModelResource): level = Field(attribute='level', readonly=True) - part = Field(attribute='part', widget=widgets.ForeignKeyWidget(Part)) + bom_id = Field(attribute='pk') + + parent_part_id = Field(attribute='part', widget=widgets.ForeignKeyWidget(Part)) parent_part_name = Field(attribute='part__full_name', readonly=True) - id = Field(attribute='sub_part', widget=widgets.ForeignKeyWidget(Part)) + sub_part_id = Field(attribute='sub_part', widget=widgets.ForeignKeyWidget(Part)) sub_part_name = Field(attribute='sub_part__full_name', readonly=True) @@ -147,7 +149,12 @@ class BomItemResource(ModelResource): report_skipped = False clean_model_instances = True - exclude = ['checksum', ] + exclude = [ + 'checksum', + 'id', + 'part', + 'sub_part', + ] class BomItemAdmin(ImportExportModelAdmin): diff --git a/InvenTree/part/bom.py b/InvenTree/part/bom.py index a1f8b5ec6a..85d7e23dbb 100644 --- a/InvenTree/part/bom.py +++ b/InvenTree/part/bom.py @@ -53,12 +53,18 @@ def ExportBom(part, fmt='csv', cascade=False): bom_items = [] + uids = [] + def add_items(items, level): # Add items at a given layer for item in items: item.level = '-' * level + # Avoid circular BOM references + if item.pk in uids: + continue + bom_items.append(item) if item.sub_part.assembly: