prije gemini provjere
This commit is contained in:
35
001.BACKEND/kupci/views.py
Normal file
35
001.BACKEND/kupci/views.py
Normal file
@@ -0,0 +1,35 @@
|
||||
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
|
||||
Reference in New Issue
Block a user