2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-16 12:05:53 +00:00

Add a 'reference_int' field to the models, to be used as a secondary index

This commit is contained in:
Oliver
2021-10-14 17:45:43 +11:00
parent e46875b0a3
commit 7ce0f817aa
9 changed files with 97 additions and 26 deletions

View File

@ -156,7 +156,7 @@ class POList(generics.ListCreateAPIView):
]
ordering_field_aliases = {
'reference': ['integer_ref', 'reference'],
'reference': ['reference_int', 'reference'],
}
filter_fields = [
@ -512,7 +512,7 @@ class SOList(generics.ListCreateAPIView):
]
ordering_field_aliases = {
'reference': ['integer_ref', 'reference'],
'reference': ['reference_int', 'reference'],
}
filter_fields = [

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.5 on 2021-10-14 06:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('order', '0050_alter_purchaseorderlineitem_destination'),
]
operations = [
migrations.AddField(
model_name='purchaseorder',
name='reference_int',
field=models.IntegerField(default=0),
),
migrations.AddField(
model_name='salesorder',
name='reference_int',
field=models.IntegerField(default=0),
),
]

View File

@ -28,7 +28,7 @@ from company.models import Company, SupplierPart
from InvenTree.fields import InvenTreeModelMoneyField, RoundingDecimalField
from InvenTree.helpers import decimal2string, increment, getSetting
from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus, StockStatus, StockHistoryCode
from InvenTree.models import InvenTreeAttachment
from InvenTree.models import InvenTreeAttachment, ReferenceIndexingMixin
def get_next_po_number():
@ -89,7 +89,7 @@ def get_next_so_number():
return reference
class Order(models.Model):
class Order(ReferenceIndexingMixin):
""" Abstract model for an order.
Instances of this class:
@ -147,6 +147,9 @@ class Order(models.Model):
return new_ref
def save(self, *args, **kwargs):
self.rebuild_reference_field()
if not self.creation_date:
self.creation_date = datetime.now().date()

View File

@ -4,7 +4,6 @@ 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 _
@ -12,7 +11,6 @@ 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
@ -75,11 +73,6 @@ 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)
@ -435,11 +428,6 @@ 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)