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