【问题标题】:Adding queryset month and year dropdown list filter in Django view page在 Django 视图页面中添加查询集月份和年份下拉列表过滤器
【发布时间】:2019-03-18 22:44:14
【问题描述】:

我正在研究 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

【问题讨论】:

  • 你到底想做什么?

标签: django django-views


【解决方案1】:

通过小部件在 filters.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 2017-06-18
    相关资源
    最近更新 更多