我正在使用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 %}
答案 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