Foros del Web » Programando para Internet » Python »

Django: Consulta Ajax a multiples tablas

Estas en el tema de Django: Consulta Ajax a multiples tablas en el foro de Python en Foros del Web. Estimados, tengo el siguiente problema que me ha estado molestando por casi una semana, explico un poco el caso para ver si alguien se le ...
  #1 (permalink)  
Antiguo 16/10/2014, 15:13
 
Fecha de Ingreso: octubre-2011
Mensajes: 27
Antigüedad: 9 años, 11 meses
Puntos: 2
Django: Consulta Ajax a multiples tablas

Estimados,
tengo el siguiente problema que me ha estado molestando por casi una semana, explico un poco el caso para ver si alguien se le ocurre alguna solución.
Estoy generando un sistema para tomas horas médicas, por medio de un Datepicker, selecciono la fecha de interés, la cual es enviada por medio de ajax a una función e django, la cual me retorna el o los Médicos disponibles en un rango de 10 días (aprox.)
El problema es el siguiente, logro recuperar los datos del médico(nombre, especialidad) y los id de las horas disponibles por medio de JSON con la propiedad de serializer(pondré el código), el problema es que debo hacer la consulta a la tabla de Horas para recuperar cuales los rangos, por lo que uso un for para recorrer el JSON y hacer las consultas correspondientes, lo cuál el método va reescribiendo en la página los datos y no dejándolo como una lista.

Acá les dejo el código para ver si me puede orientar un poco

Ajax
Código Javascript:
Ver original
  1. $( "#datepicker" ).datepicker({
  2.                 onSelect: function(date){
  3.                     $.ajax({
  4.                         data: {'hora':date},
  5.                         url: '/buscar/',
  6.                         type: 'get',
  7.                         success: function(data){
  8.                             for(var i = 0; i<data.length ; i++){
  9.                                 Medico(data[i].fields.user)
  10.                                 Hora(data[i].fields.dias)
  11.                             }
  12.  
  13.                         },
  14.                     });
  15.                 },dateFormat: "yy-mm-dd"
  16.             });
  17.  
  18.             function Medico(data){
  19.  
  20.  
  21.                     $.ajax({
  22.                         data: {'doctor':data},
  23.                         url: '/buscar/doctor/',
  24.                         type: 'get',
  25.                         success: function(data){
  26.  
  27.                         var select = $("#doctores"), options = '';
  28.                         select.empty();
  29.                         console.log(data)
  30.                                 options += '<option value="'+data[0]+'">'+data.fields.first_name+' '+data.fields.last_name+'</option>'
  31.  
  32.                             select.append(options)
  33.  
  34.  
  35.                         },
  36.  
  37.                     });
  38.  
  39.  
  40.             }
  41.  
  42.             function Hora(data){
  43.  
  44.                 for(var x = 0; x<data.length; x++){
  45.                     $.ajax({
  46.                         data: {'hora':data[x]},
  47.                         url: '/buscar/hora/',
  48.                         type: 'get',
  49.                         success: function(data){
  50.                             var html = ""
  51.                             for(var h = 0; h<data.length; h++){
  52.                                 html += '<li>'+data[h].fields.dias+'</li><ul><li>'+data[h].fields.horas+'</li></ul>'
  53.                             }
  54.                             $('#horas').html(html)
  55.                         },
  56.                     });
  57.                 }
  58.             }


Métodos de Django
Código Python:
Ver original
  1. def busqueda_hora(request):
  2.     fecha = request.GET['hora']
  3.     fin = timezone.now() + datetime.timedelta(days=20)
  4.     hora = Medico.objects.filter(dias__dias__range=[fecha, fin])
  5.     ctx = serializers.serialize('json', hora)
  6.  
  7.     return HttpResponse(ctx, mimetype='application/json')
  8.  
  9.  
  10. def get_hora(request):
  11.     h = Hora.objects.filter(id=request.GET['hora'])
  12.     ctx = serializers.serialize('json', h)
  13.  
  14.     return HttpResponse(ctx, mimetype='application/json')
  15.  
  16.  
  17. def get_doctor(request):
  18.     d = User.objects.filter(id=request.GET['doctor'])
  19.     ctx = serializers.serialize('json', d)
  20.  
  21.     return HttpResponse(ctx, mimetype='application/json')

Modelos de la aplicación

Código Python:
Ver original
  1. class Medico(models.Model):
  2.     user = models.ForeignKey(User, unique=True)
  3.     especialidad = models.CharField(max_length=50)
  4.     dias = models.ManyToManyField(Hora)
  5.  
  6.     def __unicode__(self):
  7.         return self.user.first_name
  8.  
  9.  
  10. class HoraMedico(models.Model):
  11.     medico = models.ForeignKey(Medico, unique=True)
  12.     hora = models.ForeignKey(Hora, unique=True)
  13.  
  14. from django.db import models
  15.  
  16.  
  17. DESDE_HORA_CHOICES = (
  18.     ('0800', '08:00'),
  19.     ('0830', '08:30'),
  20.     ('0900', '09:00'),
  21.     ('0930', '09:30'),
  22.     ('1000', '10:00'),
  23.     ('1030', '10:30'),
  24.     ('1100', '11:00'),
  25.     ('1130', '11:30'),
  26.     ('1200', '12:00'),
  27.     ('1230', '12:30'),
  28.     ('1300', '13:00'),
  29.     ('1330', '13:30'),
  30.     ('1400', '14:00'),
  31.     ('1430', '14:30'),
  32.     ('1500', '15:00'),
  33.     ('1530', '15:30'),
  34.     ('1600', '16:00'),
  35.     ('1630', '16:30'),
  36.     ('1700', '17:00'),
  37.     ('1730', '17:30'),
  38.     ('1800', '18:00'),
  39.     ('1830', '18:30'),
  40.     ('1900', '19:00'),
  41.     ('1930', '19:30'),
  42.     ('2000', '20:00'),
  43.     ('2030', '20:30'),
  44.     ('2100', '21:00'),
  45.     ('2130', '21:30'),
  46.     ('2200', '22:00'),
  47.     ('2230', '22:30'),
  48.     ('2300', '23:00'),
  49. )
  50.  
  51.  
  52. class Hora(models.Model):
  53.     dias = models.DateField()
  54.     horas = models.CharField(max_length=4, choices=DESDE_HORA_CHOICES)
  55.  
  56.     def __unicode__(self):
  57.         return u'%s, %s' % (self.dias, self.horas)


Saludos
  #2 (permalink)  
Antiguo 17/10/2014, 17:15
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 16 años, 6 meses
Puntos: 1360
Respuesta: Django: Consulta Ajax a multiples tablas

Lo siento pero no veo cual es tu pregunta :C

Etiquetas: ajax, django, gui, multiples, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:52.