在Django视图页面中添加queryset月和年下拉列表过滤器

时间:2018-10-14 08:37:26

标签: django django-views

我正在使用queryset Django。在我的HTML页面中,我可以通过手动输入日期从数据库中获取月份和年份的数据。相反,我需要日期选择器来选择两个日期之间的数据。例如,显示数据从 2018年9月24日 2018年9月28日

models.py

from django.db import models

class Track(models.Model):
    EndDate = models.DateField(blank=True, null=True)
        STATUS_CHOICES = [('Progress', 'Progress'),('Completed', 
        'Completed')]

filters.py

from django.contrib.auth.models import User
import django_filters
from .models import Track

class UserFilter(django_filters.FilterSet):


class Meta:
    model = Track
    fields = {
        'EndDate': ['year','month', ],


    }

views.py

from django.shortcuts import render
from django.http import HttpRequest, HttpResponse
from .filters import UserFilter   

def search(request):
status_list = Track.objects.filter(Status__startswith='Completed')
status_filter = UserFilter(request.GET, queryset=status_list)
return render(request, 'hai/data.html', {'filter': status_filter})

HTML页面

<div>
{% block content %}

  <form method="get">
    {{ filter.form.as_table }}
    </select>
    <button type="submit" class="btn btn-primary">
    <span class="glyphicon glyphicon-search"></span> Search
  </button>
  </form>
  <ul>


<table style="margin-top: 20px" class="table table-bordered" >
<span style="display:none"></span>
<thead>
  <tr>
    <th>EndDate</th>
  </tr>
</thead>
<tbody>
  {% for Track in filter.qs %}
    <tr>
      <td>{{ Track.EndDate }}</td>
    </tr>
  {% empty %}
    <tr>
      <td colspan="5">No data</td>
    </tr>
  {% endfor %}
</tbody>
</table>

{% endblock %}

HTML Page Screenshot

1 个答案:

答案 0 :(得分:0)

通过小部件在filter.py中添加了日期选择器

from django_filters.widgets import RangeWidget

class UserFilter(django_filters.FilterSet):
    EndDate = django_filters.DateFromToRangeFilter(widget=RangeWidget(attrs={'type': 
    'date'}))
class Meta:
    model = Track