在我的应用程序中提交问题时遇到一个问题,请转到下一个问题。目前我所拥有的是:
from django.shortcuts import render, get_object_or_404, HttpResponse
from . models import Certificacao, Certificado
from questoes . models import Questao
from multescolha . models import Alternativa
from . forms import QuestaoForm
from django.views.generic import ListView, FormView
class HomeView(ListView):
model = Certificacao
template_name = 'certificacoes/index.html'
def certificados(request, slug):
certificacao = get_object_or_404(Certificacao, slug=slug)
certificados = Certificado.objects.filter(certificacao__slug=slug)
context = {
'certificacao': certificacao,
'certificados': certificados,
}
return render(request, 'certificacoes/certificados.html', context)
class Perguntas(FormView):
form_class = QuestaoForm
template_name = 'certificacoes/pergunta.html'
template_name_result = 'certificacoes/resultado.html'
def get_form(self, *args, **kwargs):
slug_certificado = self.kwargs['slug_certificado'] # url capturada via kwargs
slug_certificacao = self.kwargs['slug_certificacao'] # url capturada via kwargs
self.cache_questoes = Questao.objects.filter(situacao__certificado__slug=slug_certificado,
situacao__certificado__certificacao__slug=slug_certificacao).values_list('id', flat=True)
if len(self.cache_questoes) > 0:
self.questao = Questao.objects.get_subclass(id=self.cache_questoes[0])
if self.form_class is None:
form_class = self.get_form_class()
else:
form_class = self.form_class
return form_class(**self.get_form_kwargs())
def get_form_kwargs(self):
kwargs = super(Perguntas, self).get_form_kwargs()
return dict(kwargs, questao=self.questao)
def form_valid(self, form):
hipotese = form.cleaned_data['respostas']
correto = self.questao.checar_correta(hipotese)
if correto is True:
return render(self.request, self.template_name_result, {'correto': correto,
'escolhida': self.questao.alternativa_escolhida(hipotese),
'fundamento': self.questao.alternativa_fundamento(hipotese),
'pergunta': self.questao})
else:
return render(self.request, self.template_name_result, {'correto': correto,
'escolhida': self.questao.alternativa_escolhida(hipotese),
'fundamento': self.questao.alternativa_fundamento(hipotese),
'pergunta': self.questao})
def get_context_data(self, **kwargs):
context = super(Perguntas, self).get_context_data(**kwargs)
context['questao'] = self.questao
return context
该行在此行的哪个位置返回匹配项问题的ID(可以是1个或多个):
self.cache_questoes = Questao.objects.filter(situacao__certificado__slug = slug_certificado, situacao__certificado__certificacao__slug = slug_certificacao).values_list('id',flat = True)
在这一行中,我将在模板中显示与在过滤器中找到的第一个位置的ID相关的问题:
self.questao = Questao.objects.get_subclass(id = self.cache_questoes [0])
如您所见,如果我将位置设为0或1,我通常会看到问题。我希望它自动使我回到第一个位置,显示在模板中,并在提交第一个问题时将其发送给他,直到他无所事事为止。