0

I try create to queryset with dates - from=2019.01.01 to 2019.01.02 . And i want output all data who fell into this range with 2019.01.01 and 2019.01.02 inclusive

My models:

class Commitment(models.Model):
scheduled_date = models.DateField()
    created_date = models.DateTimeField(auto_now_add=True,
                                            blank=True)

Not work:

    commitments = Commitment.objects.filter(dealer=dealer,
                                            scheduled_date__year=get_next_year(),
                                            created__date__gte=self.from_date,
                                            created__date__lte=self.to_data)

Not work:

    commitment_query = Q(dealer=dealer)
    commitment_query.add(Q(scheduled_date__year=get_next_year()), Q.AND)
    commitment_query.add(Q(created_date__gte=self.from_date), Q.AND)
    commitment_query.add(Q(created_date__lte=self.to_data), Q.AND)
    commitments1 = Commitment.objects.filter(commitment_query)

Not work:

commitments = Commitment.objects.filter(dealer=dealer,
                                                    scheduled_date__year=get_next_year(),
                                                    created_date__range=(self.from_date, self.to_data))
nesalexy
  • 848
  • 2
  • 9
  • 30

2 Answers2

1

Try adding brackets instead of parentheses to your range filter

commitments = Commitment.objects.filter(dealer=dealer)\
                                .filter(created_date__range=[from_date, to_date])

edit:

How do I filter query objects by date range in Django?

Check the accepted answer for formatting date correctly.

Nikki
  • 41
  • 3
1

You're already on the right path

it should be

Q(visit_date__gte=self.from_date) & Q(visit_date__lte=self.to_data)

Like so

commitments = Commitment.objects.filter(dealer=dealer,
                                            scheduled_date__year=get_next_year(),
                                            Q(visit_date__gte=self.from_date) & Q(visit_date__lte=self.to_data))

PS. there's a typo in your *self.to_data

crazychukz
  • 676
  • 1
  • 4
  • 10