Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- transactions = Transaction.objects.filter(item_id=OuterRef('pk')).order_by('-id')
- items = Item.objects.filter(size_id=OuterRef('pk'), barcode_id=OuterRef('barcodes')) \
- .annotate(action=Subquery(transactions.values('action')[:1], output_field=CharField()))
- sizes = Size.objects.annotate(
- item_count=SQCount(items.filter(action__in=[choices.CHOICE_ADD, choices.CHOICE_RETURN]))).distinct()
- barcode_items = Item.objects.filter(barcode_id=OuterRef('id')) \
- .annotate(action=Subquery(transactions.values('action')[:1], output_field=CharField())).values('action')
- barcodes = BarCode.objects \
- .select_related('category', 'storage') \
- .prefetch_related(Prefetch('sizes', queryset=sizes, to_attr='barcode_sizes'), 'images') \
- .annotate(
- total_amount=SQCount(barcode_items.filter(action__in=[choices.CHOICE_ADD, choices.CHOICE_RETURN])),
- own=Case(When(storage=kwargs.get('storage'), then=Value(True)), default=Value(False),
- output_field=BooleanField())) \
- .filter(Q(title__istartswith=search if not barcodes_list else '') | Q(
- description__istartswith=search if not barcodes_list else ''), **filters).distinct().order_by('-own', '-id')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement