from django.db import models from django.utils.translation import gettext_lazy as _ from django_core.models import AbstractBaseModel from model_bakery import baker from core.apps.evaluation.choices.vehicle import VehicleCondition class VehicleModel(AbstractBaseModel): # 🌐 Texnik passport ma'lumotlari (API orqali olinadi) tech_passport_series = models.CharField( verbose_name=_("tech passport series"), max_length=10, blank=True, null=True ) tech_passport_number = models.CharField( verbose_name=_("tech passport number"), max_length=20, blank=True, null=True ) tech_passport_issued_date = models.DateField( verbose_name=_("tech passport issued date"), blank=True, null=True ) tech_passport_issued_by = models.CharField( verbose_name=_("tech passport issued by"), max_length=255, blank=True, null=True ) license_plate = models.CharField( verbose_name=_("license plate"), max_length=20, blank=True, null=True ) brand = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="vehicle_brands", verbose_name=_("brand"), ) model = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="vehicle_models", verbose_name=_("model"), ) manufacture_year = models.IntegerField( verbose_name=_("manufacture year"), blank=True, null=True ) vin_number = models.CharField( verbose_name=_("VIN number"), max_length=25, blank=True, null=True ) engine_number = models.CharField( verbose_name=_("engine number"), max_length=50, blank=True, null=True ) color = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="vehicle_colors", verbose_name=_("color"), ) # 🛠 Texnik holati mileage = models.IntegerField( verbose_name=_("mileage"), blank=True, null=True, help_text=_("Distance in km") ) fuel_type = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="vehicle_fuel_types", verbose_name=_("fuel type"), ) body_type = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="vehicle_body_types", verbose_name=_("body type"), ) condition = models.CharField( verbose_name=_("condition"), max_length=20, choices=VehicleCondition.choices, blank=True, null=True, ) position = models.ForeignKey( "evaluation.ReferenceitemModel", on_delete=models.SET_NULL, null=True, blank=True, related_name="vehicle_positions", verbose_name=_("position"), ) def __str__(self): brand_name = self.brand.name if self.brand else "" model_name = self.model.name if self.model else "" return f"{brand_name} {model_name} ({self.license_plate})" @classmethod def _baker(cls): return baker.make(cls) class Meta: db_table = "Vehicle" verbose_name = _("Vehicle") verbose_name_plural = _("Vehicles")