【问题标题】:HOW TO Configure url and view for filter between two dates如何配置两个日期之间的过滤器的 url 和视图
【发布时间】:2014-12-15 17:21:42
【问题描述】:

我不知道如何在 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 和两个日期(fecha_dfecha_h)过滤列表,但我不知道如何在 url 中传递参数。谢谢你

【问题讨论】:

标签: python django django-1.7


【解决方案1】:

首先,我会使用一个表单来进行过滤:

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

【讨论】:

  • 你好,我按照你说的做了,但是“request.GET.get”返回值总是None
  • 您确定在输入中添加了“名称”属性吗?
  • 这是我的 html:          过滤器
  • Alvaro, sos de Rosario y yo tratando de escribir en INGLES JAJA
  • jajaja 太可怕了......! fijate que el name dice "fecha_desde",entonces en request.GET.get() usa el mismo nombre 'fecha_desde'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
相关资源
最近更新 更多