Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get only latest record on filter of foreign key

I have a table like this

Event table

id status date order(FK)
1 Planned 05-02-2015 1
2 Delivered 04-02-2015 2
3 Packed 03-02-2015 3
4 Return 06-02-2015 1

I want output like this

id status date order(FK)
2 Delivered 04-02-2015 2
3 Packed 03-02-2015 3
4 Return 06-02-2015 1

I tried with

query = Event.objects.annotate(order_num=Max('date'))

but didn't get the expected result. How can I achieve this output?

like image 989
Brijesh Avatar asked Oct 16 '25 14:10

Brijesh


1 Answers

Try using the following:

from django.db.models import Max

Event.objects.annotate(max_date=Max('order__event__date')) \
             .filter(date=F('max_date'))
like image 188
NS0 Avatar answered Oct 19 '25 13:10

NS0