Files
2026-05-20 21:24:00 +02:00

73 lines
2.0 KiB
Python

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'
]