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