Использование диапазона дат с помощью FilterSet Django - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь создать фильтр диапазона дат, так что это моя модель и фильтр:

class Caixa(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    data = models.DateField('Data')
    total = models.DecimalField('Total', decimal_places=2, max_digits=10, null=True)
    unidade = models.ForeignKey(Unidade, on_delete=models.CASCADE)

    def __str__(self):
        return "Caixa " + self.unidade.nome

class CaixaFilter(django_filters.FilterSet):
    data_inicial = django_filters.DateFilter(field_name='data', lookup_expr='gte'),
    data_final = django_filters.DateFilter(field_name='data', lookup_expr='lte')

    class Meta:
        model = Caixa
        fields = ['data']

Итак, в моем HTML у меня есть следующее:

<form method="get">
            <div class="row">
                <div class="col s6">
                    {% render_field filter.form.data_inicial class="datepicker" %}
                </div>
                <div class="col s6">
                    {% render_field filter.form.data_final class="datepicker" %}
                </div>
            </div>
            <button type="submit" class="btn btn-primary">
                <span class="glyphicon glyphicon-search"></span> Buscar
            </button>
        </form>

Но в HTML отображается только поле " data_final ".

1 Ответ

0 голосов
/ 10 сентября 2018

Использование DateFromToRangeFilter as,

import django_filters


class CaixaFilter(django_filters.FilterSet):
    <b>data = django_filters.DateFromToRangeFilter()</b>

    class Meta:
        model = Caixa
        fields = ['data']


Таким образом, вы можете использовать две клавиши date_after и date_before для фильтрации диапазона дат.

ПРИМЕЧАНИЕ: Суффикс after и before относится к django-filter==2.x

...