2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-01 03:00:54 +00:00

Adjust "child_items" annotation for stockitem (#9842)

* Adjust "child_items" annotation for stockitem

- Show the direct children only

* Remove unused func
This commit is contained in:
Oliver
2025-06-25 18:34:57 +10:00
committed by GitHub
parent 590c41169e
commit 73d463d84e
2 changed files with 1 additions and 23 deletions

View File

@ -37,28 +37,6 @@ def annotate_location_items(filter: Q = None):
)
def annotate_child_items():
"""Construct a queryset annotation which returns the number of children below a certain StockItem node in a StockItem tree."""
child_stock_query = stock.models.StockItem.objects.filter(
tree_id=OuterRef('tree_id'),
lft__gt=OuterRef('lft'),
rght__lt=OuterRef('rght'),
level__gte=OuterRef('level'),
)
return Coalesce(
Subquery(
child_stock_query.annotate(
count=Func(F('pk'), function='COUNT', output_field=IntegerField())
)
.values('count')
.order_by()
),
0,
output_field=IntegerField(),
)
def annotate_sub_locations():
"""Construct a queryset annotation which returns the number of sub-locations below a certain StockLocation node in a StockLocation tree."""
subquery = stock.models.StockLocation.objects.filter(

View File

@ -604,7 +604,7 @@ class StockItemSerializer(
queryset = queryset.annotate(installed_items=SubqueryCount('installed_parts'))
# Annotate with the total number of "child items" (split stock items)
queryset = queryset.annotate(child_items=stock.filters.annotate_child_items())
queryset = queryset.annotate(child_items=SubqueryCount('children'))
return queryset