from django.db import models from django_core.models.base import AbstractBaseModel from django.utils.translation import gettext_lazy as _ class AdImageModel(AbstractBaseModel): ad = models.ForeignKey( "api.AdModel", on_delete=models.CASCADE, verbose_name=_("Ad"), related_name="images" ) ad_variant = models.ForeignKey( "api.AdVariantModel", on_delete=models.CASCADE, verbose_name=_("Ad Variant"), related_name="images", null=True, blank=True ) image = models.ImageField(_("Image"), upload_to="ads/images/") order = models.PositiveIntegerField(_("Display Order"), default=0) is_primary = models.BooleanField(_("Is Primary"), default=False) def __str__(self): return f"Image for {self.ad.name}" class Meta: db_table = "ad_images" verbose_name = _("Ad Image") verbose_name_plural = _("Ad Images") ordering = ["order", "-created_at"] indexes = [ models.Index(fields=["ad", "is_primary"]), ]