Olá a todos,
Faço uma seleção de checkbox's com o javascript e coloco os id's dentro de um input listadequestoes envio para o banco. Quando envio as informações são salvas no banco de dados como eu quero, só que aparece um erro que não consigo consertar para que ele vá para pagina return redirect(lista)
. Alguém pode me ajudar.
models.py
class Prova(models.Model):
"""docstring for Prova"""
curso = models.ForeignKey(Curso)
turma = models.ForeignKey(Turma)
listadequestoes = models.CharField(max_length = 200, null=True)
form.py
class ProvaForm(ModelForm):
"""docstring for CursoForm"""
class Meta:
model = Prova
fields = ['curso', 'turma', '']
views.py
from sisp.models import Pergunta, Professor, Disciplina, Teste, Prova
from sisp.forms import ProvaForm
def selecionar_questoes(request):
lista = Pergunta.objects.all().order_by('-id')
lcurso = Curso.objects.all().order_by('nome')
lturma = Turma.objects.all().order_by('nome')
provaform = ProvaForm(request.POST)
if request.method == 'POST':
if provaform.is_valid():
dados_form = provaform.data
prova = Prova(listadequestoes = dados_form['listadequestoes'])
provaform.save()
prova.save()
return redirect(lista)
return render(request, 'selecionarquestoes.html', {'lista_perguntas': lista,
'lista_curso': lcurso, 'lista_turma': lturma, 'provaform': provaform })
selecionarquestoes.html
{% extends "base.html" %}
{% load bootstrap %}
{% block body %}
<h2>Selecione as Questões para Prova</h2>
<form method="POST">
{% csrf_token %}
<label>Escolha o Curso:</label><br>
{{provaform.curso}}
<br>
<label>Escolha o Turma:</label><br>
{{provaform.turma}}
<br>
{% for lista in lista_perguntas %}
<input type="checkbox" name="questao" value="{{lista.id}}"> Pergunta - {{lista.id}}<br>
{% endfor %}
<br>
<input type="button" onclick="myFunction()" value="Ordernar">
<br><br>
<input type="text" id="order" name="listadequestoes" placeholder="Ordem das Questões" required autofocus>
<br>
<br>
<input type="submit" value="Cadastrar">
</form>
<script>
function myFunction() {
var questao = document.forms[0];
var txt = "";
var i;
for (i = 0; i < questao.length; i++) {
if (questao[i].checked) {
txt = txt + questao[i].value + " ";
}
}
document.getElementById("order").value = txt ;
}
</script>
{% endblock %}
erro que é apresentado
IntegrityError at /selecionar-questoes/
NOT NULL constraint failed: sisp_prova.curso_id
Request Method: POST
Request URL: http://localhost:8000/selecionar-questoes/
Django Version: 1.11
Exception Type: IntegrityError
Exception Value:
NOT NULL constraint failed: sisp_prova.curso_id
Exception Location: /home/fgs/.local/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py in execute, line 328
Python Executable: /usr/bin/python
Python Version: 2.7.12
Python Path:
['/home/fgs/Documentos/CodigosPython/appsisp',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/home/fgs/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
Server time: Sun, 30 Apr 2017 23:36:44 +0000