feat: add ReferenceItem model and update QuickEvaluation FKs

- Create ReferenceitemModel with type, name, parent (self FK), order, is_active fields
- Add ReferenceType choices: brand, marka, color, fuel_type, body_type, car_position, state_car
- Implement ReferenceItem API (list, retrieve) with filter by type/parent/is_active, search, ordering
- Add ReferenceItem admin with list_filter, search, inline editing
- Change QuickEvaluation FK fields from shared.OptionsModel to evaluation.ReferenceitemModel
- Update serializers and views to use .name instead of .key
- Add ReferenceItem to unfold admin navigation
This commit is contained in:
Husanjonazamov
2026-03-09 16:04:15 +05:00
parent fd2ecd953a
commit 3798037240
36 changed files with 744 additions and 106 deletions

View File

@@ -2,8 +2,9 @@ from django_core.mixins import BaseViewSetMixin
from django_filters.rest_framework import DjangoFilterBackend
from drf_spectacular.utils import extend_schema
from rest_framework.filters import OrderingFilter, SearchFilter
from rest_framework.parsers import FormParser, MultiPartParser
from rest_framework.permissions import AllowAny
from rest_framework.viewsets import ReadOnlyModelViewSet
from rest_framework.viewsets import ModelViewSet
from core.apps.evaluation.filters.quick import QuickevaluationFilter
from core.apps.evaluation.models import QuickEvaluationModel
@@ -15,27 +16,31 @@ from core.apps.evaluation.serializers.quick import (
@extend_schema(tags=["QuickEvaluation"])
class QuickEvaluationView(BaseViewSetMixin, ReadOnlyModelViewSet):
queryset = QuickEvaluationModel.objects.select_related("created_by").all()
class QuickEvaluationView(BaseViewSetMixin, ModelViewSet):
queryset = QuickEvaluationModel.objects.select_related(
"created_by", "brand", "marka", "color", "fuel_type",
"body_type", "state_car", "car_position",
).all()
serializer_class = ListQuickevaluationSerializer
permission_classes = [AllowAny]
parser_classes = [MultiPartParser, FormParser]
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_class = QuickevaluationFilter
search_fields = ["license_plate", "model", "brand"]
search_fields = ["car_number", "marka__name", "brand__name"]
ordering_fields = [
"created_at",
"updated_at",
"license_plate",
"brand",
"model",
"car_number",
"brand__name",
"marka__name",
"car_type",
"manufacture_year",
"color",
"fuel_type",
"state_car",
"car_manufactured_date",
"color__name",
"fuel_type__name",
"state_car__name",
"status",
"mileage",
"distance_covered",
]
ordering = ["-created_at"]