Files
fleet-template.008/001.BACKEND/kupci/views.py
2026-05-31 19:21:25 +02:00

35 lines
1.3 KiB
Python

from rest_framework import viewsets, filters
from django_filters.rest_framework import DjangoFilterBackend
from .models import Kupac
from .serializers import KupacSerializer, KupacDetaljiSerializer, KupacListaSerializer
class KupacViewSet(viewsets.ModelViewSet):
"""
API endpoint koji omogućuje pregled, pretragu i uređivanje kupaca.
"""
# Optimizacija: prefetch_related smanjuje broj upita jer odmah vuče strojeve
queryset = Kupac.objects.all().prefetch_related('strojevi')
serializer_class = KupacSerializer
# Dodajemo filter backende
filter_backends = [
DjangoFilterBackend,
filters.SearchFilter,
filters.OrderingFilter
]
# 1. Točno filtriranje (npr. ?tip=pravno)
filterset_fields = ['tip', 'aktivno', 'grad']
# 2. Pretraga (npr. ?search=gradnja)
# Pretražuje naziv ili OIB
search_fields = ['naziv', 'oib']
# 3. Sortiranje (npr. ?ordering=-datum_kreiranja)
ordering_fields = ['naziv', 'datum_kreiranja']
ordering = ['naziv'] # Defaultno sortiranje
def get_serializer_class(self):
if self.action == 'retrieve': # Ako se gleda pojedinačni kupac
return KupacDetaljiSerializer # Onaj s ugniježđenim strojevima
return KupacListaSerializer # Obični bez strojeva