Reputation: 1203
Can I filter records by range of date given by the user?
I want to create a Daterange form(it will contain start date and end date) in django where the user will give their specific dates and it will filter the objects based on that dates given by the user...
Can I perform this in Django?
Upvotes: 2
Views: 13414
Reputation: 476503
Yes, say the model looks like:
class MyModel(models.Model):
date = models.DateField()
You can get all MyModel
objects between 2018-1-1
and 2018-2-9
with:
from datetime import date
MyModel.objects.filter(date__range=(date(2018,1,1), date(2018, 2, 9)))
You can thus use a form like:
class DateRangeForm(forms.Form):
start_date = forms.DateField()
end_date = forms.DateField()
and then filter in the view like:
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
Upvotes: 6