Brijesh
Brijesh

Reputation: 189

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?

Upvotes: 4

Views: 2666

Answers (1)

NS0
NS0

Reputation: 6096

Try using the following:

from django.db.models import Max

Event.objects.annotate(max_date=Max('order__event__date')) \
             .filter(date=F('max_date'))

Upvotes: 10

Related Questions