Валидация уникальности формы в 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']),
]