0
I’m trying to use a checkbox to select items in a list, but returns me the following error:
Select a valid choice. [''] is not one of the available choices.
py.models app:
from django.db import models
from django import forms
from django.forms import ModelForm
class Student(models.Model):
TAKE_COMPUTER_CHOICES = (
('sim', 'Sim'),
('nao', 'Não'),
)
COMPUTER_TYPE_CHOICES = (
('windows', 'Windows'),
('linux', 'Linux'),
('mac', 'Mac'),
)
QUESTI0N_CHOICES = (
('resposta_1', 'Obter um diferencial no mercado de trabalho'),
('resposta_2', 'Aumentar meu salário'),
('resposta_3', 'Criar um site ou aplicativo'),
('resposta_4', 'Fazer trabalho social'),
('resposta_5', 'Apoiar o crescimento do meu futuro negócio'),
('resposta_6', 'Desenvolver habilidade digital'),
('resposta_7', 'Aumentar minha criatividade'),
('resposta_8', 'Aprender a lidar com problemas complexos'),
('resposta_9', 'Melhorar minha habilidade de colaboração'),
('resposta_10', 'Ter uma carreira alternativa'),
('resposta_11', 'Compreender melhor o mundo digital'),
('resposta_12', 'Ampliar as possibilidades de minha carreira.'),
('resposta_13', 'Ter mais agilidade e dinamismo.'),
('resposta_14', 'Desenvolver habilidade lógica'),
('resposta_15', 'Melhorar meu desempenho acadêmico.'),
('resposta_16', 'Ganhar eficiência - Fazer mais com menos.'),
('resposta_17', 'Melhorar minha auto-estima.'),
('resposta_18', 'Trabalhar colaborativamente com outros profissionais'),
('resposta_19', 'Desenvolver habilidade analítica.'),
('resposta_20', 'Empoderamento e Autonomia'),
)
cpf = models.CharField(
max_length=14, unique = True, verbose_name = 'CPF')
ra = models.CharField(
max_length=10, unique= True, verbose_name='RA')
takeComputer = models.CharField(
max_length=3, choices=TAKE_COMPUTER_CHOICES, verbose_name='Você levará seu computador pessoal?')
computerType = models.CharField(
max_length=7, choices=COMPUTER_TYPE_CHOICES, verbose_name='Qual o sistema operacional do seu notebook?:', blank=True)
question = models.CharField(
max_length=100, choices=QUESTI0N_CHOICES, verbose_name='Como a habilidade de saber programar pode ajudar minha carreira?'
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
termAccepted = models.BooleanField(default=1, verbose_name='Eu li e aceito o uso da minha imagem')
def __str__(self):
return self.ra
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = ['cpf',
'ra',
'takeComputer',
'computerType',
'question',
'termAccepted',]
TAKE_COMPUTER_CHOICES = (
('sim', 'Sim'),
('nao', 'Não'),
)
QUESTI0N_CHOICES = (
('resposta_1', 'Obter um diferencial no mercado de trabalho'),
('resposta_2', 'Aumentar meu salário'),
('resposta_3', 'Criar um site ou aplicativo'),
('resposta_4', 'Fazer trabalho social'),
('resposta_5', 'Apoiar o crescimento do meu futuro negócio'),
('resposta_6', 'Desenvolver habilidade digital'),
('resposta_7', 'Aumentar minha criatividade'),
('resposta_8', 'Aprender a lidar com problemas complexos'),
('resposta_9', 'Melhorar minha habilidade de colaboração'),
('resposta_10', 'Ter uma carreira alternativa'),
('resposta_11', 'Compreender melhor o mundo digital'),
('resposta_12', 'Ampliar as possibilidades de minha carreira.'),
('resposta_13', 'Ter mais agilidade e dinamismo.'),
('resposta_14', 'Desenvolver habilidade lógica'),
('resposta_15', 'Melhorar meu desempenho acadêmico.'),
('resposta_16', 'Ganhar eficiência - Fazer mais com menos.'),
('resposta_17', 'Melhorar minha auto-estima.'),
('resposta_18', 'Trabalhar colaborativamente com outros profissionais'),
('resposta_19', 'Desenvolver habilidade analítica.'),
('resposta_20', 'Empoderamento e Autonomia'),
)
question = forms.ChoiceField(label='Como a habilidade de saber programar pode ajudar minha carreira?', choices=QUESTI0N_CHOICES, widget=forms.CheckboxSelectMultiple)
takeComputer = forms.ChoiceField(label='Você levará seu computador pessoal?', choices=TAKE_COMPUTER_CHOICES, widget=forms.RadioSelect)
py views. app:
from django.shortcuts import render, redirect
from .models import *
def create_student(request):
form = StudentForm(request.POST or None)
if form.is_valid() and form.cleaned_data['termAccepted'] == True:
student = form.save()
request.session['student_id'] = student.id
return redirect('registrations:create_student')
return render(request, 'student-form-registration.html', {'form': form})
Hello @J. Pedro A. really this way I solved my problem but was seeing that using Arrayfield I would be conditioned to use only Postgres, It will be even?
– Raphael Melo De Lima
Yes, unfortunately you need the postgres. It’s an exclusive field, I don’t know if other banks have this kind of integration, where they add fields like Arrayfield.
– J. Pedro A.