from rest_framework import serializers from .models import Kupac from fleet.models import Stroj from fleet.serializers import StrojSerializer class KupacSerializer(serializers.ModelSerializer): """ Serializer za listu kupaca. Fokus je na brzini i osnovnim kontaktnim podacima. """ # Izračunato polje iz modela (@property broj_strojeva) broj_strojeva = serializers.IntegerField(read_only=True) class Meta: model = Kupac fields = [ 'id', 'naziv', 'grad', 'telefon', 'email', 'tip', 'aktivno', 'broj_strojeva' # Korisno za prikaz u tablici (npr. "5 strojeva") ] class KupacDetaljiSerializer(serializers.ModelSerializer): # Ugniježđeni strojevi - prikazujemo puni objekt, ne samo ID strojevi = StrojSerializer(many=True, read_only=True) # Dodatna polja koja nisu u bazi, ali su korisna za Astro frontend ukupan_broj_strojeva = serializers.IntegerField(source='broj_strojeva', read_only=True) class Meta: model = Kupac fields = [ 'id', 'naziv', 'oib', 'email', 'telefon', 'adresa', 'grad', 'postanski_broj', 'tip', 'napomena', 'aktivno', 'datum_kreiranja', 'ukupan_broj_strojeva', 'strojevi' # Lista svih strojeva s punim detaljima ] class KupacListaSerializer(serializers.ModelSerializer): """ Optimizirani serializer za prikaz u tablici (listi). Vraća samo osnovne podatke potrebne za pregled svih klijenata. """ # Dohvaćamo property iz modela koji broji strojeve broj_strojeva = serializers.IntegerField(read_only=True) class Meta: model = Kupac fields = [ 'id', 'naziv', 'grad', 'oib', 'telefon', 'tip', 'aktivno', 'broj_strojeva' ]