Configurar url y vista para consulta entre fechas Django 1.7

60 views
Skip to first unread message

EFe

unread,
Dec 15, 2014, 12:29:30 PM12/15/14
to djan...@googlegroups.com
Hola necesito saber como configuro las url en urls.py y como haria la clase en la vista ewn el siguiente caso:

models.py:

class Paciente(models.Model):
   tipo_doc = models.ForeignKey(Tipo_doc)
   num_doc = models.CharField(max_length=20, primary_key=True)
   ...

class Consulta (models.Model):
   numero = models.ForeignKey(Paciente)
   fecha = models.DateField()
   ...      

en template este es el archivo lista.html:
<h5>
  Fecha desde: <input class="inputDate" id="fechadesde" value={{ fecha_d }} />
  Fecha hasta: <input class="inputDate" id="fechahasta" value={{ fecha_h }} />
  <a href="/clinica/filtrar_consulta" class="button">Filtrar</a>
</h5>

<ul class="actions">
 ...             
Necesito obtener todas las consultas desde un rango de fechas (fechadesde, fechahasta) de cierto paciente Paciente.numdoc, pero no se como pasar estos parametros por medio de la url
ni como armar la clase ListView en views.py . Muchas gracias

Daniel

unread,
Dec 15, 2014, 1:15:06 PM12/15/14
to djan...@googlegroups.com
¿Por que intentas pasarlas por la URL? ¿no sería mejor pasarlas a la vista por POST?

--
Has recibido este mensaje porque estás suscrito al grupo "django-ar" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-ar+...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a djan...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/django-ar.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/django-ar/5074b544-2b9a-412f-9e4d-1cfd4461ca3f%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Daniel Malisani

EFe

unread,
Dec 15, 2014, 2:02:58 PM12/15/14
to djan...@googlegroups.com
Hola Daniel, soy novato en Django, perdón por mi ignorancia, ¡como seria via POST para pasar parametros tipo date?. Muchas gracias

xavier lesa

unread,
Dec 15, 2014, 7:04:41 PM12/15/14
to django-list
Mira por ahí esto te puede servir, así lo haría yo mas o menos:

# en urls.py

from ......views import ConsultaListView

# y en tus urls agregas

    url('^consultas/', ConsultaListView.as_view(), name="consultas_lista"),


# en views.py

class ConsultaListView(ListView):
    model = Consulta
    template_name = "consultas/consultas_list.html"

    def get_queryset(self, *args, **kwargs):
        # en qs guardo el QuerySet por defecto
        qs = super(ConsultaListView, self).get_queryset(*args, **kwargs)

        self.fechadesde = self.request.GET.get('fechadesde')
        self.fechahasta = self.request.GET.get('fechahasta')

        if self.fechadesde:
            # aca asumo que fechadesde es un datetime o su representación en texto
            qs = qs.filter(fecha__gte = self.fechadesde)

        if self.fechahasta:
            # aca asumo que fechahasta es un datetime o su representación en texto
            qs = qs.filter(fecha__lte = self.fechahasta)

        return qs

    
    def get_context_data(self, **kwargs):
        context = super(ConsultaListView, self).get_context_data(*args, **kwargs)
        context.update({
            'filtros': {
                    'fechadesde': self.fechadesde,
                    'fechahasta': self.fechahasta
                }
            })

        return context


# consultas/consultas_list.html

<form action="">
    Fecha desde: <input class="inputDate" name="fechadesde" {% if filtros.fechadesde %}value="{{ filtros.fechadesde }}"{% endif %} />
    Fecha hasta: <input class="inputDate" name="fechahasta" {% if filtros.fechahasta %}value="{{ filtros.fechahasta }}"{% endif %} />
    <button type="submit" class="button">Filtrar</button>
</form>

EFe

unread,
Dec 15, 2014, 7:22:31 PM12/15/14
to djan...@googlegroups.com
Hola xavier, estuve viendo y tratando de entender el código, me sale error "name 'args' is not defined" en la linea:
" context = super(ConsultaListView, self).get_context_data(*args, **kwargs)"

Muchas gracias, saludos

El lunes, 15 de diciembre de 2014 14:29:30 UTC-3, EFe escribió:

EFe

unread,
Dec 15, 2014, 7:30:48 PM12/15/14
to djan...@googlegroups.com
xavier, ya solucione lo del error, la clase get_context_data toma un solo argumento get_context_data(**kwargs), pero cuando ejecuto la consulta me muestra todo el listado, es decir, no filtra. Voy a seguir estudiando el caso. Muchas gracias.

Saludos

El lunes, 15 de diciembre de 2014 14:29:30 UTC-3, EFe escribió:

xavier lesa

unread,
Dec 15, 2014, 7:32:54 PM12/15/14
to django-list
Al código que te pase tenes que ponerle vos los validadores y demás cosas de jquery o javascript para las fechas, así a secas no vas a poder hacer mucho salvo que pongas las fechas a mano, como: 2-10-2014 o 10-2-2014



Xavier

xavierlesa.com | @xavierlesa
cel: +011 15 3868-3918

--
Has recibido este mensaje porque estás suscrito al grupo "django-ar" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-ar+...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a djan...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/django-ar.

EFe

unread,
Dec 15, 2014, 7:37:51 PM12/15/14
to djan...@googlegroups.com
Si, si, a medida que voy viendo el código que me pasaste voy aprendiendo un poco, (tutorial al lado). Después te aviso como me fue. Muchas gracias xavier.

Saludos

El lunes, 15 de diciembre de 2014 14:29:30 UTC-3, EFe escribió:

xavier lesa

unread,
Dec 16, 2014, 8:33:52 AM12/16/14
to django-list
De nada!



Xavier

xavierlesa.com | @xavierlesa
cel: +011 15 3868-3918

--
Has recibido este mensaje porque estás suscrito al grupo "django-ar" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a django-ar+...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a djan...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/django-ar.
Reply all
Reply to author
Forward
0 new messages