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:
@ -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 = [
|
||||
|
23
InvenTree/order/migrations/0051_auto_20211014_0623.py
Normal file
23
InvenTree/order/migrations/0051_auto_20211014_0623.py
Normal 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),
|
||||
),
|
||||
]
|
@ -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()
|
||||
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user