Cria uma apricação para cadastrar os membros de um time de futebol, uma maneira de treinar com o Framework, porém na hora de validar o formulário ele deixa passar números iguais, segue o código:
def valida_nome(self, nome):
validade = True
nomes = []
perfis = Perfil.objects.all()
for perfil in perfis:
nomes.append(perfil.nome)
if nome in nomes:
validade = False
self.adiciona_erro('O nome já está cadastrado')
return validade
def valida_numero(self, numero):
validade = True
numeros = []
perfis = Perfil.objects.all()
for perfil in perfis:
numeros.append(perfil.n_camisa)
if numero in numeros:
validade = False
self.adiciona_erro('O número já está cadastrado')
return validade
def is_valid(self):
valid = True
if not super(Perfilform, self).is_valid():
self.adiciona_erro('Por favor, verifique os dados imformados (principalmente o número)')
valid = False
return valid
E o código dentro da função de view:
def registrar(request):
if request.method == 'GET':
form =Perfilform()
return render(request, 'registrar.html', {'form': form})
elif request.method == 'POST':
form = Perfilform(request.POST)
dados = form.data
if form.is_valid():
if Perfilform.valida_nome(form, dados['nome']) and Perfilform.valida_numero(form, dados['n_camisa']):
perfil = Perfil(nome = dados['nome'], nome_camisa= dados['nome_camisa'],
n_camisa=dados['n_camisa'], n_telefone=dados['n_telefone'])
perfil.save()
return render(request, 'registrar.html', {'form': form})
Quando tento cadastrar um nome já exstente ele aponta que ele já exste e pede para que eu mude, já em relação ao número não ocorre o mesmo, pode ter alguma relação com o fato de um ser um CharField e o outro IntegerField?
Gostaria de uma maneira de reolver meu problema, desde já agradeço pela ajuda