python – django order_by query set, ascending and descending

The Question :

333 people think this question is useful

How can I order by descending my query set in django by date?

Reserved.objects.all().filter(client=client_id).order_by('check_in')

I just want to filter from descending all the Reserved by check_in date.

The Question Comments :

The Answer 1

622 people think this answer is useful
Reserved.objects.filter(client=client_id).order_by('-check_in')

Notice the - before check_in.

Django Documentation

The Answer 2

73 people think this answer is useful
Reserved.objects.filter(client=client_id).order_by('-check_in')

A hyphen “-” in front of “check_in” indicates descending order. Ascending order is implied.

We don’t have to add an all() before filter(). That would still work, but you only need to add all() when you want all objects from the root QuerySet.

More on this here: https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-specific-objects-with-filters

The Answer 3

20 people think this answer is useful

You can also use the following instruction:

Reserved.objects.filter(client=client_id).order_by('check_in').reverse()

The Answer 4

14 people think this answer is useful

for ascending order:

Reserved.objects.filter(client=client_id).order_by('check_in')

for descending order:

1.  Reserved.objects.filter(client=client_id).order_by('-check_in')

or

2.  Reserved.objects.filter(client=client_id).order_by('check_in')[::-1]

The Answer 5

13 people think this answer is useful

It works removing .all():

Reserved.objects.filter(client=client_id).order_by('-check_in')

The Answer 6

12 people think this answer is useful

Adding the – will order it in descending order. You can also set this by adding a default ordering to the meta of your model. This will mean that when you do a query you just do MyModel.objects.all() and it will come out in the correct order.

class MyModel(models.Model):

    check_in = models.DateField()

    class Meta:
        ordering = ('-check_in',)

The Answer 7

3 people think this answer is useful
  1. Ascending order

    Reserved.objects.all().filter(client=client_id).order_by('check_in')
    
    
  2. Descending order

    Reserved.objects.all().filter(client=client_id).order_by('-check_in')
    
    

- (hyphen) is used to indicate descending order here.

The Answer 8

3 people think this answer is useful

If for some reason you have null values you can use the F function like this:

from django.db.models import F

Reserved.objects.all().filter(client=client_id).order_by(F('check_in').desc(nulls_last=True))

So it will put last the null values. Documentation by Django: https://docs.djangoproject.com/en/stable/ref/models/expressions/#using-f-to-sort-null-values

The Answer 9

2 people think this answer is useful
Reserved.objects.filter(client=client_id).earliest('check_in')

Or alternatively

Reserved.objects.filter(client=client_id).latest('-check_in')

Here is the documentations for earliest() and latest()

The Answer 10

1 people think this answer is useful

This is working for me.

latestsetuplist = SetupTemplate.objects.order_by('-creationTime')[:10][::1]

The Answer 11

-1 people think this answer is useful

67

Reserved.objects.filter(client=client_id).order_by(‘-check_in’)

‘-‘ is indicates Descending order and for Ascending order just give class attribute

Add a Comment