如何配置URL并查看两个日期之间的过滤器

时间:2014-12-15 17:21:43

标签: python django django-1.7

我不知道如何在myapp中配置views.pyurls.py。用于过滤模板中输入日期的日期之间的列表。

这是我的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()
   ...      

这是我的文件" 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">
 ...             

我需要按paciente和2个日期(fecha_dfecha_h)过滤列表,但我不知道如何在网址中传递参数。谢谢

1 个答案:

答案 0 :(得分:0)

首先,我使用表单进行过滤:

lista.html:

<form method='get' action='.'>
    Fecha desde: <input class="inputDate" name='fechadesde' />
    Fecha hasta: <input class="inputDate" name="fechahasta" />
    <input type='submit' value='Filtrar'/>
</form>

然后,在您的视图中,您需要检索这些值并根据该值过滤查询集。 这是一个可以在函数或基于类的视图中使用的代码片段:

qs = Paciente.objects.all()
fecha_desde = request.GET.get('fechadesde', None)
fecha_hasta = request.GET.get('fechahasta', None)
if fecha_desde:
    qs = qs.filter(fecha__gte=fecha_desde)
if fecha_hasta:
    qs = qs.filter(fecha__lte=fecha_hasta)
context = {'consultas': qs}

从那里开始。一个很好的增强功能是使用django表单系统而不是手动编写你的html并执行手动验证

详细了解他们here