problems with order by month

37 views
Skip to first unread message

Osvaldo Ruso Olea

unread,
Aug 20, 2018, 8:04:46 PM8/20/18
to Django users
Hi how are you, I have problems filtering and sorting by date, precisely per month.
my intention is to filter the database for birthdays in the current month.




def cardio(request):
    cardio = Alumno.objects.order_by('fechanacimiento')
    contexto = {'cardio':cardio}
    return render(request, 'cardio.html', contexto)

Matthew Pava

unread,
Aug 20, 2018, 10:03:57 PM8/20/18
to Django users

Try this:

cardio = Alumno.objects.filter(fechanacimiento__month=timezone.now().month)

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/e9f385a8-6b62-4e15-9020-9aa79ee7c48d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Osvaldo Ruso Olea

unread,
Aug 21, 2018, 2:50:00 AM8/21/18
to django...@googlegroups.com
You are a genius, thank you very much, it worked perfectly, I just made one more modification

def cardio (request):
     now = timezone.now ()
     cardio = Alumno.objects.filter ( fechanacimiento __month = now.month)
     context = {'cardio': cardio}
     return render (request, 'cardio.html', context)

What I can not do is sort the dates from lowest to highest,

Thank you very much

Matthew Pava

unread,
Aug 21, 2018, 1:15:09 PM8/21/18
to django...@googlegroups.com

You can chain the methods.

cardio = Alumno.objects.filter ( fechanacimiento __month = now.month).order_by(‘fechanacimiento’)

Osvaldo Ruso Olea

unread,
Aug 21, 2018, 5:57:56 PM8/21/18
to django...@googlegroups.com
I have problems ordering the date per day in ascending order.
thanks to your answer I have managed to filter the list for the current month, but unfortunately it is sorted by year and not by day in ascending order

def cardio(request):
    now = timezone.now()
    cardio = Alumno.objects.filter(fechanacimiento__month=now.month).order_by("fechanacimiento")
    contexto = {'cardio':cardio}
    return render(request, 'cardio.html', contexto)

this is the result that I have achieved

Lista

  • 2 Ago. 1943
  • 15 Ago. 1948
  • 28 Ago. 1948
  • 13 Ago. 1959
  • 21 Ago. 1962
  • 7 Ago. 1967
  • 5 Ago. 1970
  • 24 Ago. 1970
  • 27 Ago. 1970
  • 5 Ago. 1971
  • 26 Ago. 1971
  • 2 Ago. 1973
  • 4 Ago. 1973
  • 23 Ago. 1973
  • 11 Ago. 1977
  • 3 Ago. 1978
  • 23 Ago. 1979
  • 27 Ago. 1980
  • 11 Ago. 1981
  • 8 Ago. 1982
  • 23 Ago. 1982
  • 23 Ago. 1982
  • 15 Ago. 1983
  • 20 Ago. 1983
  • 15 Ago. 1984
  • 19 Ago. 1985
  • 8 Ago. 1986
  • 14 Ago. 1986
  • 29 Ago. 1986
  • 5 Ago. 1988
  • 25 Ago. 1988
  • 31 Ago. 1988
  • 27 Ago. 1990
  • 21 Ago. 1991
  • 22 Ago. 1991
  • 27 Ago. 1991
  • 14 Ago. 1992
  • 6 Ago. 1993
  • 13 Ago. 1993



Franklin Sarmiento

unread,
Aug 21, 2018, 5:58:24 PM8/21/18
to django...@googlegroups.com
The best solution is:

Alumno.objects.filter(........).order_by('fechanacimiento__month') if you want to filter descending so with the "-" before the "fechanacimiento__month" by example:

Alumno.objects.filter(........).order_by('-fechanacimiento__month') # descending
Alumno.objects.filter(........).order_by('fechanacimiento__month') # by default ascending.

Good look!.
____________________________________________________
Franklin Sarmiento
Full-stack developer
Twitter: @franklinitiel
linkedin: Franklin Sarmiento ( frankl...@gmail.com )
Teléfono(s): +57 320 490.79.64 / +58 426 273.8103 ( whatsapp )



Franklin Sarmiento

unread,
Aug 21, 2018, 6:00:20 PM8/21/18
to django...@googlegroups.com
Try this:

Alumno.objects.filter(........).order_by('fechanacimiento__month', 'fechanacimiento__day')

Alumno.objects.filter(........).order_by('fechanacimiento__month, fechanacimiento__day')

Alumno.objects.filter(........).order_by('fechanacimiento__month').order_by('fechanacimiento__day')


____________________________________________________
Franklin Sarmiento
Full-stack developer
Twitter: @franklinitiel
linkedin: Franklin Sarmiento ( frankl...@gmail.com )
Teléfono(s): +57 320 490.79.64 / +58 426 273.8103 ( whatsapp )


Osvaldo Ruso Olea

unread,
Aug 21, 2018, 11:33:20 PM8/21/18
to django...@googlegroups.com
try this but it did not work
Alumno.objects.filter(........).order_by('fechanacimiento__month') if you want to filter descending so with the "-" before the "fechanacimiento__month" by example:

Alumno.objects.filter(........).order_by('-fechanacimiento__month') # descending
Alumno.objects.filter(........).order_by('fechanacimiento__month') # by default ascending.

and then




Alumno.objects.filter(........).order_by('fechanacimiento__month', 'fechanacimiento__day')

Alumno.objects.filter(........).order_by('fechanacimiento__month, fechanacimiento__day')

Alumno.objects.filter(........).order_by('fechanacimiento__month').order_by('fechanacimiento__day')


Osvaldo Ruso Olea

unread,
Aug 21, 2018, 11:39:34 PM8/21/18
to django...@googlegroups.com
try this but it does not work, keep ordering by year, and not by day ascending

cardio = Alumno.objects.filter ( fechanacimiento __month = now.month).order_by(‘fechanacimiento’)  
  • 2 Ago. 1943
  • 15 Ago. 1948
  • 28 Ago. 1948
  • 13 Ago. 1959
  • 21 Ago. 1962
  • 7 Ago. 1967
  • 5 Ago. 1970
  • 24 Ago. 1970
  • 27 Ago. 1970
  • 5 Ago. 1971
  • 26 Ago. 1971
  • 2 Ago. 1973
  • 4 Ago. 1973
  • 23 Ago. 1973
  • 11 Ago. 1977
  • 3 Ago. 1978
  • 23 Ago. 1979
  • 27 Ago. 1980
  • 11 Ago. 1981
  • 8 Ago. 1982
  • 23 Ago. 1982
  • 23 Ago. 1982
  • 15 Ago. 1983
  • 20 Ago. 1983
  • 15 Ago. 1984
  • 19 Ago. 1985
  • 8 Ago. 1986
  • 14 Ago. 1986
  • 29 Ago. 1986
  • 5 Ago. 1988
  • 25 Ago. 1988
  • 31 Ago. 1988
  • 27 Ago. 1990      

  • try this but it did not work
    Alumno.objects.filter(........).order_by('fechanacimiento__month') if you want to filter descending so with the "-" before the "fechanacimiento__month" by example:

    Alumno.objects.filter(........).order_by('-fechanacimiento__month') # descending
    Alumno.objects.filter(........).order_by('fechanacimiento__month') # by default ascending.

    and then




  • Alumno.objects.filter(........).order_by('fechanacimiento__month', 'fechanacimiento__day')

    Alumno.objects.filter(........).order_by('fechanacimiento__month, fechanacimiento__day')

    Alumno.objects.filter(........).order_by('fechanacimiento__month').order_by('fechanacimiento__day')

Phako Perez

unread,
Aug 22, 2018, 12:16:19 PM8/22/18
to django...@googlegroups.com
I think you miss the column to order

cardio = Alumno.objects.filter ( fechanacimiento __month = now.month).order_by(‘fechanacimiento’)  
    Should be

    cardio = Alumno.objects.filter ( fechanacimiento __month = now.month).order_by(‘fechanacimiento_day’)  

      Sent from my iPhone

      Franklin Sarmiento

      unread,
      Aug 22, 2018, 1:09:20 PM8/22/18
      to django...@googlegroups.com
      hi Osvaldo, try filtering by date ( by month and date ), do you can filter by month and day ??? if this is what do you want, so, you  can filter by date by example: "fechanacimiento__date", so, the queryset sould be this:

      Alumno.objecs.filter(.....).order_by('fechanacimiento__date') # by default is ascending, for descending add the "-" before the order keyword, by example "-fechanacimiento__date"

      Good look.


      ____________________________________________________
      Franklin Sarmiento
      Full-stack developer
      Twitter: @franklinitiel
      linkedin: Franklin Sarmiento ( frankl...@gmail.com )
      Teléfono(s): +57 320 490.79.64 / +58 426 273.8103 ( whatsapp )


      --
      You received this message because you are subscribed to the Google Groups "Django users" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
      To post to this group, send email to django...@googlegroups.com.
      Visit this group at https://groups.google.com/group/django-users.
      Reply all
      Reply to author
      Forward
      0 new messages