Добавление фильтра выпадающего списка месяца и года в наборе запросов на странице просмотра Django - PullRequest
0 голосов
/ 14 октября 2018

Я работаю над набором запросов Django.На моей HTML-странице я могу получить данные из базы данных за месяц и год, введя дату вручную.Вместо этого мне нужен выбор даты для выбора данных между двумя датами.Например, Показать данные с 24 сентября 2018 К 28 сентября 2018

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-страницы

1 Ответ

0 голосов
/ 02 января 2019

Добавлен выбор даты в 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
...