Выберите правильный выбор. Этот выбор не является одним из доступных вариантов. ошибка с Django Form
У меня есть html-страница раздела комментариев, и всякий раз, когда я пытаюсь заполнить поля и нажать кнопку sumbit, она выдает следующую ошибку - Select a valid choice. That choice is not one of the available choices.
views.py
@login_required(login_url='/accounts/login')
def add_comment(request, slug):
movie = Movie.objects.get(slug=slug)
form = CommentForm(request.POST)
if form.is_valid():
form.save()
return redirect('movie:movie_list')
context = {'form': form}
return render(request, 'add_comment.html', context)
forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('commenter_name', 'comment_body')
widgets = {
'commenter_name': forms.TextInput(attrs={'class': 'form-control'}),
'comment_body': forms.Textarea(attrs={'class': 'form-control'}),
}
models.py
class Comment(models.Model):
movie = models.ForeignKey(Movie, related_name="comments", on_delete=models.CASCADE)
commenter_name = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
comment_body = models.TextField()
date_added = models.DateTimeField(auto_now=True)
def __str__(self):
return '%s - %s' % (self.movie.title, self.commenter_name)
Обратите внимание, что я могу добавить комментарий через панель /admin, но когда я попытался добавить API к нему, все пошло не так.
Я удалил widgets
из form.py, что дало мне следующую ошибку.
После этого я столкнулся с другой ошибкой - NOT NULL constraint failed: movie_comment.post_id
, после изменения views.py
я смог успешно разместить сообщение
@login_required(login_url='/accounts/login/')
def comment_create(request, slug):
movie = Movie.objects.get(slug=slug)
if request.method == 'POST':
form = forms.CommentForm(request.POST, request.FILES)
if form.is_valid:
comment = form.save(commit=False)
comment.post = movie
comment.author = request.user
form.save()
return redirect('/')
else:
form = forms.CommentForm()
return render(request, 'add_comment.html', {'form': form})
Теперь это работает.