2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 12:35:46 +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

@ -85,7 +85,7 @@ class BuildList(generics.ListCreateAPIView):
]
ordering_field_aliases = {
'reference': ['integer_ref', 'reference'],
'reference': ['reference_int', 'reference'],
}
search_fields = [

View File

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

View File

@ -28,7 +28,7 @@ from mptt.exceptions import InvalidMove
from InvenTree.status_codes import BuildStatus, StockStatus, StockHistoryCode
from InvenTree.helpers import increment, getSetting, normalize, MakeBarcode
from InvenTree.validators import validate_build_order_reference
from InvenTree.models import InvenTreeAttachment
from InvenTree.models import InvenTreeAttachment, ReferenceIndexingMixin
import common.models
@ -69,7 +69,7 @@ def get_next_build_number():
return reference
class Build(MPTTModel):
class Build(MPTTModel, ReferenceIndexingMixin):
""" A Build object organises the creation of new StockItem objects from other existing StockItem objects.
Attributes:
@ -108,6 +108,8 @@ class Build(MPTTModel):
def save(self, *args, **kwargs):
self.rebuild_reference_field()
try:
super().save(*args, **kwargs)
except InvalidMove:

View File

@ -10,8 +10,7 @@ from django.core.exceptions import ValidationError as DjangoValidationError
from django.utils.translation import ugettext_lazy as _
from django.db.models import Case, When, Value
from django.db.models import BooleanField, IntegerField
from django.db.models.functions import Cast
from django.db.models import BooleanField
from rest_framework import serializers
from rest_framework.serializers import ValidationError
@ -72,11 +71,6 @@ class BuildSerializer(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
def __init__(self, *args, **kwargs):