2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-12-17 17:58:22 +00:00

[API] Tags filters (#11021)

* Add optional "tags" field

* Refactor "tags" field

- Off by default
- Only prefetch when requested (expensive)
- Ref: https://github.com/inventree/InvenTree/pull/11012
- Ref: https://github.com/inventree/InvenTree/issues/11002
- Closes https://github.com/inventree/InvenTree/issues/10996

* Bump API version

* Tweak unit tests

* Ensure all fields are available when writing data

* Handle case where request has *no* method
This commit is contained in:
Oliver
2025-12-17 07:14:56 +11:00
committed by GitHub
parent 2eccf13c93
commit 140c65b26c
16 changed files with 61 additions and 97 deletions

View File

@@ -8,7 +8,6 @@ from django.utils.translation import gettext_lazy as _
from rest_framework import serializers
from sql_util.utils import SubqueryCount
from taggit.serializers import TagListSerializerField
import common.filters
import company.filters
@@ -260,7 +259,7 @@ class ManufacturerPartSerializer(
'parameters',
]
tags = TagListSerializerField(required=False)
tags = common.filters.enable_tags_filter()
parameters = common.filters.enable_parameters_filter()
@@ -383,7 +382,7 @@ class SupplierPartSerializer(
'pack_quantity_native',
]
tags = TagListSerializerField(required=False)
tags = common.filters.enable_tags_filter()
def __init__(self, *args, **kwargs):
"""Initialize this serializer with extra detail fields as required."""
@@ -398,10 +397,9 @@ class SupplierPartSerializer(
return
if brief:
self.fields.pop('tags')
self.fields.pop('available')
self.fields.pop('on_order')
self.fields.pop('availability_updated')
self.fields.pop('available', None)
self.fields.pop('on_order', None)
self.fields.pop('availability_updated', None)
# Annotated field showing total in-stock quantity
in_stock = serializers.FloatField(