73 lines
2.0 KiB
Python
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'
|
|
] |