Как сделать так, чтобы один пользователь мог поставить только одну оценку товару?

Как сделать так, чтобы один пользователь мог поставить только одну оценку товару? Я читал о UniqueConstraint, но не могу понять, как его использовать здесь.

models.py

#...

User = get_user_model()


class Item(models.Model):
    id = models.PositiveIntegerField(
        primary_key=True, validators=[MinValueValidator(1)])
    is_published = models.BooleanField(default=True)
    name = models.CharField(max_length=150)
    text = models.TextField(validators=[validate_correct])

    tags = models.ManyToManyField('Tag', blank=True)
    category = models.ForeignKey('Category', on_delete=models.CASCADE, blank=True, null=True)

    def __str__(self):
        return self.name

#...


class Rating(models.Model):
    id = models.PositiveIntegerField(
        primary_key=True, validators=[MinValueValidator(1)])
    EMOTION_TYPES = (
        (1, 'Hatred'),
        (2, 'Dislike'),
        (3, 'Neutral'),
        (4, 'Adoration'),
        (5, 'Love'),
    )
    star = models.IntegerField(null=True, choices=EMOTION_TYPES)
Вернуться на верх