from rest_framework import serializers from rest_framework.validators import UniqueValidator from .models import Element, InventoryItem, Partner import logging logger = logging.getLogger("root") class PartnerSerializer(serializers.ModelSerializer): total_inventory = serializers.SerializerMethodField() class Meta: model = Partner fields = ["id", "external_id", "name", "total_inventory"] def get_total_inventory(self, instance): return InventoryItem.objects.filter(partner=instance).count() class InventorySerializer(serializers.ModelSerializer): partner_name = serializers.CharField(source="partner.name", read_only=True) total_elements = serializers.SerializerMethodField() class Meta: model = InventoryItem fields = [ "id", "name", "created_at", "total_elements", "partner", "partner_name", ] def get_total_elements(self, instance): return Element.objects.filter(inventory=instance).count() class ElementSerializer(serializers.ModelSerializer): inventory_name = serializers.CharField(source="inventory.name", read_only=True) element_id = serializers.CharField( max_length=100, validators=[UniqueValidator(queryset=Element.objects.all())] ) class Meta: model = Element fields = [ "id", "external_id", "element_id", "photo", "additional_text", "inventory", "inventory_name", ]