This commit is contained in:
A'zamov Samandar
2025-12-06 21:50:28 +05:00
parent 3aa20fdaa1
commit f5766aa319
140 changed files with 2376 additions and 1582 deletions

View File

@@ -2,33 +2,57 @@ from django.db import models
from django_core.models.base import AbstractBaseModel
from django.utils.translation import gettext_lazy as _
from django.contrib.auth import get_user_model
from core.apps.api.models.ad import AdModel
from django.core.validators import MinValueValidator, MaxValueValidator
class Feedback(AbstractBaseModel):
star = models.IntegerField(default=0, verbose_name=_("Star"))
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, verbose_name=_("User"))
ad = models.ForeignKey(AdModel, on_delete=models.CASCADE, verbose_name=_("Ad"), related_name="feedback")
comment = models.CharField(max_length=255, verbose_name=_("Comment"))
class FeedbackModel(AbstractBaseModel):
star = models.IntegerField(
_("Rating"),
default=5,
validators=[MinValueValidator(1), MaxValueValidator(5)]
)
user = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
verbose_name=_("User"),
related_name="feedbacks"
)
ad = models.ForeignKey(
"api.AdModel",
on_delete=models.CASCADE,
verbose_name=_("Ad"),
related_name="feedbacks"
)
comment = models.TextField(_("Comment"), max_length=1000)
def __str__(self):
return str(self.pk)
return f"{self.user.username} - {self.ad.name} ({self.star}★)"
class Meta:
db_table = "feedback"
verbose_name = _("Feedback")
verbose_name_plural = _("Feedbacks")
ordering = ["-created_at"]
unique_together = [["user", "ad"]]
indexes = [
models.Index(fields=["ad", "-created_at"]),
models.Index(fields=["user"]),
]
class FeedbackImages(AbstractBaseModel):
feedback = models.ForeignKey(Feedback, on_delete=models.CASCADE, verbose_name=_("Feedback"))
image = models.ImageField(verbose_name=_("Image"), upload_to="feedback/"
"images/")
class FeedbackImageModel(AbstractBaseModel):
feedback = models.ForeignKey(
FeedbackModel,
on_delete=models.CASCADE,
verbose_name=_("Feedback"),
related_name="images"
)
image = models.ImageField(_("Image"), upload_to="feedbacks/")
def __str__(self):
return str(self.pk)
return f"Image for {self.feedback}"
class Meta:
db_table = "feedback_images"
verbose_name = _("Feedback Images")
verbose_name = _("Feedback Image")
verbose_name_plural = _("Feedback Images")