Scheinin
Scheinin

Reputation: 195

How to use django F expressions to only filter the date of datetime fields

I need to filter another datetime field through a datetime field, but I just need to compare date. How to implement it by F expression?

F expression does not seem to format fields

My model is:

class Test():
   date1 = models.DateTimeField()
   date2 = models.DateTimeField()

I just need to compare date, not time.

Test.objects.filter(Q(date2__gt=F('date1')))

It keeps comparing datetime. That's not what I want. I just want to compare date. As a Django rookie, I can't find a solution.
I used time zone and Mysql, and I don't want to modify them.

Upvotes: 3

Views: 1173

Answers (1)

Sanip
Sanip

Reputation: 1810

You can use the __date field lookup for this.

In your case:

Test.objects.filter(Q(date2__date__gt=F('date1__date')))

Can give you the desired result.

The __date field lookup helps to extract only the date from the datetime field.

But make sure that you are using Django>1.9, for older versions of Django, you need to use other methods

Upvotes: 1

Related Questions