Я прошу прощения за все вопросы, которые я отправляю сегодня, но я в своем уме на этом.
Я пытаюсь сделать вопрос-ответ для видео-сайта, и япытаюсь получить вопрос для отправки через AJAX.
Модель вопроса:
class Question(models.Model):
user = models.ForeignKey(User, editable=False)
video = models.ForeignKey(Video, editable=False)
section = models.ForeignKey(Section, editable=False)
title = models.CharField(max_length=255)
description = models.TextField(null=True, blank=True)
ModelForm:
class QuestionForm(ModelForm):
def __init__(self, video, *args, **kwargs):
super(QuestionForm, self).__init__(*args, **kwargs)
if self.instance:
self.fields['section'].queryset = Section.objects.filter(video=video)
class Meta:
model = Question
POST-параметры, отправленные запросом jQuery AJAX (параметр видео добавляется кодом Javascript):
section=6&title=test&description=test&video=1
И, наконец, вот представление, над которым я работаю для обработки отправки:
def question_submit(request):
u = request.user
if u.is_authenticated():
q=QuestionForm(request.POST)
if q.is_valid():
logger.debug("YES!")
else:
logger.debug("NO!")
f=q.save(commit=False)
f.user=u
f.video_id=int(request.POST['video'])
f.save()
return HttpResponse("OK")
else:
return JsonResponse({'failed': 'You are not logged in. Try logging in in a new tab, then re-submit your question.'})
Как предложено docs , я сохраняю с помощью commit = false, чтобы я мог изменить объект.
У меня две проблемы:
Когда он достигает q.is_valid (), он выдает ошибку «У объекта QuestionForm нет атрибута cleaned_data».
Если я выну бит q.is_valid (), f.save ()успешно, но он вставляет пустую строку в базу данных.
Всем, кто может помочь, я в долгу перед вами.