Разработка веб-приложения для онлайн-анкеты с помощью Django
У меня уже есть сайт на Django, и я хочу загрузить несколько анкет, чтобы мои клиенты могли отвечать на них онлайн. чтобы я мог получать и интерпретировать ответы в панели администратора Django. В каждой анкете есть несколько вопросов, и ответ на каждый вопрос может быть множественным выбором или описательным. Я создал таблицу вопросов в model.py и вопросы будут записаны на сайте через Django admin dashboard.
Теперь у меня проблемы с классом UserAnswer в models.py и UserAnswerForm в forms.py, а также с кодами views и Html. Когда я отправляю анкету, ни один элемент не сохраняется в Django admin dashboard.
models.py:
forms.py:
from django.forms import ModelForm
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.forms.widgets import RadioSelect
from django.contrib.auth.models import User
from .models import *
class createuserform(UserCreationForm):
class Meta:
model=User
fields=['username','password']
CHOICES=[('op1','گزینه1'),
('op2','گزینه2'),
('op3','گزینه3'),
('op4','گزینه4'),
('op5','گزینه5'),
('op6','گزینه6'),
('op7','گزینه7')]
class UserAnswertForm(forms.Form):
op1 = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
op2 = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
op3 = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
op4 = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
op5 = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
op6 = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
op7 = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
user_answer = forms.CharField(widget=forms.TextInput())
admin.py:
from django.contrib import admin
from .models import *
# Register your models here.
class AssessmentsAdmin(admin.ModelAdmin):
list_display=['__str__', 'title']
class Meta:
model = Assessments
class QuestionCategoryAdmin(admin.ModelAdmin):
list_display=['__str__', 'title']
class Meta:
model = QuestionCategory
class QuestionAdmin(admin.ModelAdmin):
list_display=['__str__', 'category', 'assessment']
class Meta:
model = Question
class UserAnswerAdmin(admin.ModelAdmin):
list_display=['__str__', 'user']
list_display = ['user', 'assessment', 'is_check']
list_filter = ['is_check']
list_editable = ['is_check']
#search_fields = ['subject', 'text']
admin.site.register(Assessments, AssessmentsAdmin)
admin.site.register(QuestionCategory, QuestionCategoryAdmin)
admin.site.register(Question, QuestionAdmin)
admin.site.register(UserAnswer, UserAnswerAdmin)
views.py:
def do_assessment(request, *args, **kwargs):
assessments = UserAnswertForm(request.POST or None)
if request.method == "POST" and assessments.is_valid():
op1 = assessments.cleaned_data.get('op1')
op2 = assessments.cleaned_data.get('op2')
op3 = assessments.cleaned_data.get('op3')
op4 = assessments.cleaned_data.get('op4')
op5 = assessments.cleaned_data.get('op5')
op6 = assessments.cleaned_data.get('op6')
op7 = assessments.cleaned_data.get('op7')
user_answer = assessments.cleaned_data.get('user_answer')
UserAnswer.objects.create(op1=op1, op2=op2, op3=op3, op4=op4, op5=op5, op6=op6, op7=op7, user_answer = user_answer, is_check=False)
# todo : show user a success message
assessments.save()
return render(request, 'assessments/question.html', context)
else:
assessments = Assessments.objects.all()
#selected_assessment_id = kwargs['assessmentId']
#question: Question = Question.objects.get_by_id(selected_question_id)
questions = Question.objects.all()
context = {
'assessments': assessments,
'questions': questions
}
return render(request, 'assessments/question.html', context)
question.html: