Skip to content

Instantly share code, notes, and snippets.

@fandrefh
Last active September 3, 2015 01:53
Show Gist options
  • Save fandrefh/7fd308bf2626c1576ac9 to your computer and use it in GitHub Desktop.
Save fandrefh/7fd308bf2626c1576ac9 to your computer and use it in GitHub Desktop.
#forms.py
class AgendaForm(forms.ModelForm):
paciente = forms.ModelChoiceField(queryset=Paciente.objects.all(), widget=forms.TextInput())
class Meta:
model = Agenda
fields = ('paciente', 'medico', 'data_consulta', 'horario', 'observacoes')
#views.py
def add_agenda(request):
if request.method == 'POST':
print(request.POST)
form_agenda = AgendaForm(request.POST)
if form_agenda.is_valid():
form_agenda.save()
return redirect('paciente:listaagenda')
else:
print(form_agenda.errors)
else:
form_agenda = AgendaForm()
return render(request, 'paciente/add_agenda.html', {'form_agenda': form_agenda})
#template
{% extends "base.html" %}
{% load widget_tweaks %}
{% block row %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<h4>Agendamento de Consultas</h4>
</div>
</div><br><br>
<form class="form-horizontal" action="." method="POST">
{% csrf_token %}
<div class="form-group">
<label for="{{ form_agenda.paciente.id_for_label }}" class="col-sm-2 control-label">Paciente</label>
<div class="col-sm-10">
{{ form_agenda.paciente|attr:"autofocus"|add_class:"form-control" }}
</div>
</div>
{% if form_agenda.paciente.errors %}
<div class="alert alert-warning col-sm-offset-2 col-sm-10" role="alert">
<p>{{ form_agenda.paciente.errors.as_text }}</p>
</div>
{% endif %}
<div class="form-group">
<label for="{{ form_agenda.medico.id_for_label }}" class="col-sm-2 control-label">Médico</label>
<div class="col-sm-10">
{{ form_agenda.medico|add_class:"form-control" }}
</div>
</div>
{% if form_agenda.medico.errors %}
<div class="alert alert-warning col-sm-offset-2 col-sm-10" role="alert">
<p>{{ form_agenda.medico.errors.as_text }}</p>
</div>
{% endif %}
<div class="form-group">
<label for="{{ form_agenda.data_consulta.id_for_label }}" class="col-sm-2 control-label">Data da Consulta</label>
<div class="col-sm-10">
{{ form_agenda.data_consulta|add_class:"form-control" }}
</div>
</div>
{% if form_agenda.data_consulta.errors %}
<div class="alert alert-warning col-sm-offset-2 col-sm-10" role="alert">
<p>{{ form_agenda.data_consulta.errors.as_text }}</p>
</div>
{% endif %}
<div class="form-group">
<label for="{{ form_agenda.horario.id_for_label }}" class="col-sm-2 control-label">Horário da Consulta</label>
<div class="col-sm-10">
{{ form_agenda.horario|add_class:"form-control" }}
</div>
</div>
{% if form_agenda.horario.errors %}
<div class="alert alert-warning col-sm-offset-2 col-sm-10" role="alert">
<p>{{ form_agenda.horario.errors.as_text }}</p>
</div>
{% endif %}
<div class="form-group">
<label for="{{ form_agenda.observacoes.id_for_label }}" class="col-sm-2 control-label">Observações</label>
<div class="col-sm-10">
{{ form_agenda.observacoes|add_class:"form-control" }}
</div>
</div>
{% if form_agenda.observacoes.errors %}
<div class="alert alert-warning col-sm-offset-2 col-sm-10" role="alert">
<p>{{ form_agenda.observacoes.errors.as_text }}</p>
</div>
{% endif %}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" class="btn btn-primary" value="Salvar">
<a href="{% url 'paciente:listapacientes' %}" class="btn btn-warning">Cancelar</a>
<!--<input type="submit" class="btn btn-primary" value="Salvar">-->
</div>
</div>
</form>
{% endblock row %}
#views ajax
def get_pacientes(request):
if request.GET:
q = request.GET.get('term', '')
pacientes = Paciente.objects.filter(nome__icontains = q)[:20]
results = []
for paciente in pacientes:
paciente_json = {}
paciente_json['id'] = paciente.id
paciente_json['label'] = paciente.nome
paciente_json['value'] = paciente.nome
results.append(paciente_json)
data = json.dumps(results)
else:
data = 'fail'
mimetype = 'application/json'
return HttpResponse(data, mimetype)
#jqueryui ajax
//Ajax para o agendamento de cliente.
$(document).ready(function() {
$("#id_paciente").autocomplete({
source: "/consultorio/get-pacientes/",
minLength: 2,
});
});
#Mensagem de erro
* Faça uma escolha válida. Sua escolha não é uma das disponíveis.
#O erro acontece na hora de gravar nno banco.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment