Django - Problem with posting new date value to a class from models.py

36 views Asked by At

I'm trying to save a date value to a datefield from the django default database but it always return a None value even if the query to add this value isn't None. I tried to convert this date to string and datetime.date type and that didn't solve my problem. I'll post the html, models.py and views.py files.

HTML file:

 

 

{% extends 'account/main_template.html' %}

{% block content %}

{% include 'account/psic_area/nav_bar_h.html' %}



<h1>
    Recibos
</h1>
    
        <form action='' method='POST'> 
            {% csrf_token %}
            <label for='select-paciente'>Selecione o paciente:</label>
            <select id='select-paciente' name='nomes'>
                {% for paciente in pacientes %}
                
                    <option value='{{paciente.id_usuario}}' >{{paciente.nome | capfirst}}</option>
                
                {% endfor %}
                
            </select>
            <br><br>
           <label for='quantidade'>Quantidade de Consultas</label>
            <input name='quantidade' id='quantidade' type='number' required min='0' max='100'/><br>
            <input type='submit' value='Criar Calendários' /><br>
            <div id='input-dinamico'>
                {% for inputs in inputs_dinamicos %}{{inputs | safe}}{% endfor %}
                
            </div><br><br>
            <input type='submit' value='Enviar' name='botao'>
           <!--  <input  type='submit' value='Enviar'/> # aqui é para usar se estivesse usando código do script-->
            <br><br>
        </form>
    
<br><br><br>

{% for data in datas_i %} {{data}}
{% endfor %}

{{nome_do_paciente}}
/* Seleciona o input de quantidade*/ var quantidade = document.getElementById('quantidade'); /* Seleciona o div onde os inputs dinânicos serão inseridos*/ var inputsdinamicos = document.getElementById('input-dinamico'); /* cria uma função para gerar a quantidade de inputs*/ function gerarInputs(){ /*Limpa o div de inputs dinâmico*/ inputsdinamicos.innerHTML = ""; /* Obtém o valor do input de quantidade*/ var valor = parseInt(quantidade.value); if (valor > 0 && valor '; /*Insere o novo input no div de inputs dinâmicos*/ inputsdinamicos.appendChild(tituloinput); inputsdinamicos.appendChild(novoinput); } } } /* Adiciona um evento de mudança ao input de quantidade*/ quantidade.addEventListener('change', gerarInputs); -->

{% endblock %}

VIEWS.PY file


from django.shortcuts import render from django.http import HttpResponse from .models import PacientesCadastrado, Sessoes, Recibos from datetime import datetime

patient_data = PacientesCadastrado()

def home(request): return render(request, 'account/index.html')

def dashboard(request): return render(request, 'account/dashboard.html')

def patient_list(request): return render(request, 'account/psic_area/patient_list.html')

def lista_pacientes(request):

novo_usuario = PacientesCadastrado()
novo_usuario.id_usuario = request.POST.get('id_usuario')
novo_usuario.nome = request.POST.get('nome')
novo_usuario.idade = request.POST.get('idade')
novo_usuario.ini_trat = request.POST.get('ini_trat')
novo_usuario.valor_c = request.POST.get('valor_c')
novo_usuario.qtd_cons = request.POST.get('qtd_cons')
novo_usuario.cpf = request.POST.get('cpf')
novo_usuario.telefone = request.POST.get('telefone')
novo_usuario.e_mail = request.POST.get('e_mail')
novo_usuario.save()   

#exibir todos os usuários já cadastrados em uma nova página

pacientes_cadastrados = {
    'paciente': PacientesCadastrado.objects.all()
}

return render(request, 'users/pacientes.html', pacientes_cadastrados)

def blog_mente_colorida(request): return render(request, 'account/blog/blog.html')

def area_do_psi(request): return render(request, 'account/psic_area/main_psic_area.html')

def recibo(request):

qtd = request.POST.get('quantidade')    #pegando o valor do input com name='quantidade'
datas = []
lista_test = []
nome = None


if request.method == 'POST' and int(qtd) != 0:        #caso haja um input 
    nome = request.POST.get('nomes')
    nome_paciente = PacientesCadastrado.objects.get(id_usuario=nome)
    for i in range(int(qtd)):
        input_html = f'Data da sessão {i + 1}:  <input type="date", name="data{i+1}"/><br>'
        datas.append(input_html)

    
    button = request.POST.get('botao')
   
    
    if button == 'Enviar':
        
        
        
        for i in range(int(qtd)):
            if request.POST.get(f'data{i+1}') is not None:
                
                data_i = request.POST.get(f'data{i+1}')
               # data_i = datetime.strptime(data_i, '%Y-%m-%d').date()

                all_sessions = Sessoes()  # trazendo o banco de dados Sessoes
                all_sessions.paciente_sessao = nome_paciente 
                all_sessions.sessao = data_i
                all_sessions.save()
                lista_test.append(all_sessions.sessao)
                
                      
                lista_test.append(str(type(all_sessions.sessao)) + '<br><br>')
                

                
                print(data_i)
                
                lista_test.append(data_i)
                lista_test.append(str(type(data_i)))
                
                
        
Pacientes = {'pacientes': PacientesCadastrado.objects.all(),
             'inputs_dinamicos': datas,
             'datas_i': lista_test,
             'nome_do_paciente': nome,
            
            }

return render(request, 'account/psic_area/recibo.html', Pacientes)

def contrato(request): return render(request, 'account/psic_area/contrato.html')

def test(request):

recibo = request.POST.get('quantidade_teste')
inputs = []
if request.method == 'POST':
    for i in range(int(recibo)):
       input_html = f'Sessão {i}: <input name="input-sessao{i}" type="date"> <br>'
       inputs.append(input_html)
       
    


return render(request, 'account/testando.html', {'recibos': recibo,
                                                 'pacientes':                                                     PacientesCadastrado.objects.all(),
                                                 'inputs': inputs,
                                                })

MODELS.PY file


    from django.db import models

    class PacientesCadastrado(models.Model):
        id_usuario = models.AutoField(primary_key=True)
        nome = models.CharField(null=False, max_length=150)
        idade = models.DateField(null=False)
        cpf = models.PositiveIntegerField(null=False, unique=True)
        ini_trat = models.DateField(null=False)
        valor_c = models.PositiveIntegerField(null=False, default=0)
        qtd_cons = models.PositiveIntegerField(null=False, default=0)
        e_mail = models.EmailField(null=False, default='')
        telefone = models.PositiveIntegerField(null=False, default=0)

        def __str__(self):
            return self.nome

    class Recibos(models.Model):
        paciente_recibo = models.ForeignKey(PacientesCadastrado, on_delete=models.CASCADE) 

    class Sessoes(models.Model):
        paciente_sessao = models.ForeignKey(PacientesCadastrado, on_delete=models.CASCADE)
        sessoes = models.DateField(null=False)

Here you can see that all_sessions.sessao has a datatime value enter image description here

and here is the None Value error from all_session.sessao enter image description here

0

There are 0 answers