diff --git a/InvenTree/InvenTree/filters.py b/InvenTree/InvenTree/filters.py index fbd1e53fe0..94e6e1765b 100644 --- a/InvenTree/InvenTree/filters.py +++ b/InvenTree/InvenTree/filters.py @@ -34,8 +34,6 @@ class InvenTreeOrderingFilter(OrderingFilter): Ordering fields should be mapped to separate fields """ - idx = 0 - ordering_initial = ordering ordering = [] diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index f2bf97cf7f..5a64bda0a0 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -72,7 +72,7 @@ class BuildSerializer(InvenTreeModelSerializer): ) ) - # Annotate with a "integer" version of the reference field, to be used for natural sorting + # Annotate with an "integer" version of the reference field, to be used for natural sorting queryset = queryset.annotate( integer_ref=Cast('reference', output_field=IntegerField()) ) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index af30a3a5c5..a451f05ac8 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -152,9 +152,13 @@ class POList(generics.ListCreateAPIView): filter_backends = [ rest_filters.DjangoFilterBackend, filters.SearchFilter, - filters.OrderingFilter, + InvenTreeOrderingFilter, ] + ordering_field_aliases = { + 'reference': ['integer_ref', 'reference'], + } + filter_fields = [ 'supplier', ] @@ -504,9 +508,13 @@ class SOList(generics.ListCreateAPIView): filter_backends = [ rest_filters.DjangoFilterBackend, filters.SearchFilter, - filters.OrderingFilter, + InvenTreeOrderingFilter, ] + ordering_field_aliases = { + 'reference': ['integer_ref', 'reference'], + } + filter_fields = [ 'customer', ] diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 40cd2def58..bcc1791db4 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -4,6 +4,7 @@ JSON serializers for the Order API # -*- coding: utf-8 -*- from __future__ import unicode_literals +from django.db.models.fields import IntegerField from django.utils.translation import ugettext_lazy as _ @@ -11,6 +12,7 @@ from django.core.exceptions import ValidationError as DjangoValidationError from django.db import models, transaction from django.db.models import Case, When, Value from django.db.models import BooleanField, ExpressionWrapper, F +from django.db.models.functions import Cast from rest_framework import serializers from rest_framework.serializers import ValidationError @@ -73,6 +75,11 @@ class POSerializer(InvenTreeModelSerializer): ) ) + # Annotate with an "integer" version of the reference field, to be used for natural sorting + queryset = queryset.annotate( + integer_ref=Cast('reference', output_field=IntegerField()) + ) + return queryset supplier_detail = CompanyBriefSerializer(source='supplier', many=False, read_only=True) @@ -428,6 +435,11 @@ class SalesOrderSerializer(InvenTreeModelSerializer): ) ) + # Annotate with an "integer" version of the reference field, to be used for natural sorting + queryset = queryset.annotate( + integer_ref=Cast('reference', output_field=IntegerField()) + ) + return queryset customer_detail = CompanyBriefSerializer(source='customer', many=False, read_only=True)