diff --git a/vehicles/models.py b/vehicles/models.py index 748f1f8..58d69e2 100644 --- a/vehicles/models.py +++ b/vehicles/models.py @@ -75,7 +75,7 @@ class Vehicles(models.Model): class Vehicles_infos(models.Model): - Vehicle = models.ForeignKey(Vehicles, on_delete=models.CASCADE, verbose_name="Véhicule") + Vehicle = models.ForeignKey(Vehicles, on_delete=models.CASCADE, verbose_name="Véhicule" , related_name='vehicles_infos') nType = models.CharField('Type', max_length=1, choices=TYPES_CHOICES, default=1) sDesc = models.TextField("Description") bEnabled = models.BooleanField("Actif",default=1) diff --git a/vehicles/serializers.py b/vehicles/serializers.py index d20a794..26876b8 100644 --- a/vehicles/serializers.py +++ b/vehicles/serializers.py @@ -3,12 +3,28 @@ from rest_framework import serializers from.models import Vehicles_infos, Vehicles -class cl_Vehicles_Serializer(serializers.ModelSerializer): - class Meta: - model = Vehicles - fields = '__all__' + class cl_Vehicles_infos_Serializer(serializers.ModelSerializer): class Meta: model = Vehicles_infos fields = '__all__' + +class cl_Vehicles_Serializer(serializers.ModelSerializer): + technique_infos = serializers.SerializerMethodField() + matos_infos = serializers.SerializerMethodField() + perempt_infos = serializers.SerializerMethodField() + + class Meta: + model = Vehicles + fields = '__all__' + + def get_technique_infos(self, obj): + enabled_infos = Vehicles_infos.objects.filter(Vehicle=obj, bEnabled=True, nType=1) + return cl_Vehicles_infos_Serializer(enabled_infos, many=True).data + def get_matos_infos(self, obj): + enabled_infos = Vehicles_infos.objects.filter(Vehicle=obj, bEnabled=True, nType=2) + return cl_Vehicles_infos_Serializer(enabled_infos, many=True).data + def get_perempt_infos(self, obj): + enabled_infos = Vehicles_infos.objects.filter(Vehicle=obj, bEnabled=True, nType=3) + return cl_Vehicles_infos_Serializer(enabled_infos, many=True).data diff --git a/vehicles/views.py b/vehicles/views.py index c197d4b..d61a127 100644 --- a/vehicles/views.py +++ b/vehicles/views.py @@ -6,7 +6,7 @@ from django.template import loader from django.views.decorators.clickjacking import xframe_options_exempt from vehicles.models import * -from rest_framework import viewsets +from rest_framework import viewsets, filters from Reskreen.rest_permission import CustomPermission_DjangoModel_based from .serializers import cl_Vehicles_Serializer, cl_Vehicles_infos_Serializer @@ -15,6 +15,9 @@ class VehicleViewset(viewsets.ModelViewSet): queryset = Vehicles.objects.all() serializer_class = cl_Vehicles_Serializer permission_classes = [CustomPermission_DjangoModel_based] + filter_backends = [filters.OrderingFilter] + ordering_fields = ['nStatus', 'nType', 'nOrder'] # Les champs sur lesquels vous voulez permettre l'ordering + ordering = ['nStatus', 'nType', 'nOrder'] # Ordre par défaut class VehicleInfosViewset(viewsets.ModelViewSet): queryset = Vehicles_infos.objects.all()