Как отфильтровать записи по диапазону дат в django? - PullRequest
0 голосов
/ 05 октября 2018

Могу ли я отфильтровать записи по диапазону дат, заданных пользователем?

Я хочу создать форму Daterange (она будет содержать даты начала и окончания) в django, где пользователь будет указывать свои конкретные даты ион будет фильтровать объекты на основе дат, указанных пользователем ...

Могу ли я выполнить это в Django?

1 Ответ

0 голосов
/ 05 октября 2018

Да, скажем, модель выглядит так:

class MyModel(models.Model):
    date = models.DateField()

Вы можете получить все MyModel объекты в диапазоне от 2018-1-1 до 2018-2-9 с помощью:

from datetime import date

MyModel.objects.filter(date__range=(date(2018,1,1), date(2018, 2, 9)))

Таким образом, вы можетеиспользуйте форму как:

class DateRangeForm(forms.Form):
    start_date = forms.DateField()
    end_date = forms.DateField()

и затем фильтруйте в представлении как:

def my_view(request):
    if request.method == 'POST':
        form = DateRangeForm(request.POST)
        if form.is_valid():
            qs = MyModel.objects.filter(date__range=(
                form.cleaned_data['start_date'],
                form.cleaned_data['end_date']
            ))
            # do something
         else:
            # do something
            pass
    else:
        # do something
        pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...