Почему приложение-анкета Django не распознает варианты ответов после развертывания с Apache и MySQL?
В настоящее время я пытаюсь развернуть свой проект Django через Apache и MySQL. Все приложения моего проекта работают хорошо, за исключением приложения "Анкеты". Я не могу записать ответы в базу данных и получаю ошибку, которая гласит [{'id': ['Выберите правильный выбор. Этот выбор не является одним из доступных вариантов.']}]. Я в замешательстве, потому что это приложение работало нормально, когда я запускал свой проект через локальный сервер и стандартную базу данных Django SQLite.
В моем приложении есть два опросника: один - доска настроения, где пользователь выбирает картинку, которая лучше всего отражает его чувства (я не пытаюсь записать фактическое изображение, только название картинки), а второй - Эдинбургская шкала послеродовой депрессии, это опросник с несколькими вариантами ответов, в котором нет картинок.
Может ли кто-нибудь дать мне совет, почему приложение не распознает варианты ответов?
Вот файл моих моделей:
User = settings.AUTH_USER_MODEL
class Questionnaire(models.Model):
name = models.CharField(max_length=255)
text = models.CharField(max_length=200)
def __str__(self):
return self.name
class Question(models.Model):
text = models.CharField(max_length=200)
questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE, related_name='questions')
def __str__(self):
return self.text
class Answer(models.Model):
question = models.ForeignKey(Question, models.SET_NULL, blank=True, null=True, related_name='answerlist')
questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE, related_name='answers', default='')
text = models.CharField(max_length=200)
image = models.CharField(null=True, max_length=20)
image_location = models.CharField(null=True, max_length=20)
def __str__(self):
return self.text
class Response(models.Model):
user = models.ForeignKey(User, on_delete = models.CASCADE)
date = models.DateTimeField(auto_now_add=True)
question = models.ForeignKey(Question, on_delete = models.CASCADE)
answer = models.ForeignKey(Answer, on_delete = models.CASCADE)
def __str__(self):
return '%s - %s - %s - %s' % (self.user, self.question, self.answer, self.date)
Вот мой файл представлений:
def questionnaire_index(request):
questionnaires = Questionnaire.objects.all()
context = {
"questionnaires": questionnaires,
}
return render(request, 'questionnaire_index.html', context=context)
from django.forms import ModelForm
class ResponseForm(ModelForm):
class Meta:
model = Response
fields = ['question', 'answer']
def __init__(self, *args, user=None, **kwargs):
self.user = user
super().__init__(*args, **kwargs)
def save(self, commit=True):
response = super().save(commit=False)
response.user = self.user
return response.save()
def take_questionnaire_fs(request, questionnaire_id):
ResponseFormSet = modelformset_factory(Response, form=ResponseForm, extra=0)
if request.method == 'POST':
formset = ResponseFormSet(request.POST or None, request.FILES, form_kwargs={'user': request.user})
if formset.is_valid():
print("Formset is valid")
formset.save()
return HttpResponseRedirect(reverse ('questionnaires:questionnaire_index'))
else:
print("Formset is NOT valid")
print(formset.errors)
print(formset.non_form_errors())
questionnaire = Questionnaire.objects.get(id=questionnaire_id)
questions = Question.objects.filter(questionnaire_id=questionnaire_id)
answers = Answer.objects.filter(questionnaire_id=questionnaire_id)
return render(request, 'questionnaires/questionnaire_lec.html', {
'questions': questions,
'answers': answers,
'questionnaire': questionnaire,
})
Мой HTML файл:
А вот мой файл URLs:
app_name = "questionnaires"
urlpatterns = [
path('', views.questionnaire_index, name='questionnaire_index'),
path('take-questionnaire-fs/<int:questionnaire_id>/', views.take_questionnaire_fs, name='take-questionnaire'),
]