Валидация уникальности формы в Django

Я хочу сделать ошибку, если пользователь комментирует фильм один раз, а затем снова тот же фильм. Точнее, я хочу разрешить пользователю комментировать фильм только один раз, и выдать ошибку, если он попытается прокомментировать его дважды. Как я могу это изменить? Пожалуйста, будьте конкретны с вашим кодом.

class Comment_movie_CreateForm(ModelForm):
    class Meta:
        model = Comment_movie
        fields = ('comment', 'stars')
        exclude = ['user']

    comment = forms.CharField(required=False,label='comment',widget=forms.Textarea(
        attrs={'placeholder':'example input'}),max_length=1000)
    stars   = forms.FloatField(required=False,label='stars',widget=forms.NumberInput(
                            attrs={'type': 'range','id':'form_homework',"class": "no_resize",'min': '0','max':'10','step':'0.1'}))
    def clean(self):
        cleaned_data = super().clean()
        try:
            Comment_movie.objects.get(user=self.user, movie=self.movie)
        except Comment_movie.DoesNotExist:
            pass
        else:
            raise forms.ValidationError('Solution with this Name already exists for this problem')

        # Always return cleaned_data
        return cleaned_data
class Comment_movie(models.Model):
    comment     = models.TextField(max_length=1000)
    stars       = models.FloatField(
                     blank=False,
                     null=False,
                     default=0, 
                     validators=[MinValueValidator(0.0),
                     MaxValueValidator(10.0)]
                  )

    user        = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    movie       = models.ForeignKey(Movie, on_delete=models.CASCADE)
    created_at  = models.DateTimeField(default=datetime.now)
    updated_at  = models.DateTimeField(auto_now=True)
    class Meta:
        unique_together = ('user', 'movie')
        indexes = [
        models.Index(fields=['user', 'movie']),
        ]
    
Вернуться на верх