from rest_framework import serializers from core.apps.evaluation.models import VehicleModel class BaseVehicleSerializer(serializers.ModelSerializer): brand_name = serializers.CharField(source="brand.name", read_only=True, default=None) model_name = serializers.CharField(source="model.name", read_only=True, default=None) color_name = serializers.CharField(source="color.name", read_only=True, default=None) fuel_type_name = serializers.CharField(source="fuel_type.name", read_only=True, default=None) body_type_name = serializers.CharField(source="body_type.name", read_only=True, default=None) condition_display = serializers.CharField(source="get_condition_display", read_only=True) position_name = serializers.CharField(source="position.name", read_only=True, default=None) class Meta: model = VehicleModel fields = [ "id", "brand", "brand_name", "model", "model_name", "license_plate", "manufacture_year", "color", "color_name", "fuel_type_name", "condition_display", ] class ListVehicleSerializer(BaseVehicleSerializer): class Meta(BaseVehicleSerializer.Meta): pass class RetrieveVehicleSerializer(BaseVehicleSerializer): class Meta(BaseVehicleSerializer.Meta): fields = [ "id", "tech_passport_series", "tech_passport_number", "tech_passport_issued_date", "tech_passport_issued_by", "license_plate", "brand", "brand_name", "model", "model_name", "manufacture_year", "vin_number", "engine_number", "color", "color_name", "mileage", "fuel_type", "fuel_type_name", "body_type", "body_type_name", "condition", "condition_display", "position", "position_name", "created_at", "updated_at", ] class CreateVehicleSerializer(serializers.ModelSerializer): class Meta: model = VehicleModel fields = [ "tech_passport_series", "tech_passport_number", "tech_passport_issued_date", "tech_passport_issued_by", "license_plate", "brand", "model", "manufacture_year", "vin_number", "engine_number", "color", "mileage", "fuel_type", "body_type", "condition", "position", ]