views:

96

answers:

1

Hi

This can't be hard, but... I just need to get the most recent three objects added to my database field.

So, query with reverse ID ordering, maximum three objects.

Been fiddling round with

Records.objects.order_by(-id)[:3]
Records.objects.all[:3]

and including an if clause to check whether there are actually three objects:

num_maps = Records.objects.count()
if (num_maps > 3): # etc...

and using reverse() and filter() for a while...

But just can't figure it out! Nothing I do gives the right result and using num_maps feels pretty inelegant. Not getting much joy from the documentation. Can anyone help?!

+3  A: 

All you should need is:

Records.objects.all().order_by('-id')[:3]

You need the all() first before the order_by and the argument you pass into order_by should be a string. No need to check if there are actually 3 before running this query because the [:3] will not break if there are less than 3.

sheats
Yep, that's the one :)
Richard