django order_by query set, ascending and descending

Question:

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.

Asked By: gadss

||

Answers:

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

Notice the - before check_in.

Django Documentation

Answered By: Keith
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

Answered By: Leonardo.Z

It works removing .all():

Reserved.objects.filter(client=client_id).order_by('-check_in')
Answered By: Tony Nguyen

You can also use the following instruction:

Reserved.objects.filter(client=client_id).order_by('check_in').reverse()
Answered By: Patrick

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]
Answered By: anjaneyulubatta505

This is working for me.

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

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',)
Answered By: Thomas Turner
  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.

Answered By: Vishvajit Pathak

67

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

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

Answered By: user13061886

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

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()

Answered By: Amin Mir

This is very easy and simple just follow the below instruction.

—– This for Descending

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

——This for Ascending

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

if you want to select by Descending just add minus operator before the attribute field or if you want to select by Ascending no need minus operator.

Answered By: Mithun Rana

You can try this

Staffs.objects.filter(active=1).order_by('rank')

(hyphen) is used to indicate descending orde.

Answered By: Bercove
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.