Files
backend/core/apps/api/models/feedback/feedback.py
A'zamov Samandar f5766aa319 update
2025-12-06 21:50:28 +05:00

59 lines
1.7 KiB
Python

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 django.core.validators import MinValueValidator, MaxValueValidator
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 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 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 f"Image for {self.feedback}"
class Meta:
db_table = "feedback_images"
verbose_name = _("Feedback Image")
verbose_name_plural = _("Feedback Images")