• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

291
Views
Django rest framework: devuelve objetos ordenados por el resultado del método invocable

Entonces, básicamente, el título lo dice todo: ¿cómo puedo ordenar el conjunto de consultas que se devolverá en la API mediante un resultado de método invocable que no está almacenado en la base de datos?

Este campo es dinámico y depende de la solicitud de cada usuario, por lo que no se puede almacenar en ningún lado.

Intenté simplemente usar, que es lo que quiero lograr:

 queryset = Post.objects.filter('my_filters').order_by('my_method')

pero no funciona ya que tiene que ser una columna en la base de datos.

También probé:

 queryset = sorted(Post.objects.filter('my_filters'), key=lambda x: x.my_method())

Pero arroja el error "AttributeError: el objeto 'lista' no tiene atributo 'modelo'".

Entonces, ¿cómo puedo ordenar los resultados del conjunto de consultas de acuerdo con un método? ¿Algunas ideas? También tendré que limitar el número de respuestas a los mejores resultados calculados de esta manera.

¡Gracias!

EDITAR:

'my_filters' en este caso solo verifica una propiedad booleana

 .filter(active=True)

y my_method comprueba el tiempo transcurrido comparándolo con timezone.now():

 def microseconds_elapsed(self): return getMicrosecondsElapsed(self.datetime)

donde

 def getMicrosecondsElapsed(datetime): timedelta = timezone.now() - datetime microseconds = 0 microseconds += timedelta.microseconds microseconds += timedelta.seconds*1000000 microseconds += timedelta.days*86400000000 return microseconds

He progresado un poco usando las funciones de anotación y PostgreSQL usando:

 get_queryset().annotate(time_elapsed=Func(F('datetime'), function='age'))

pero esto da como resultado un error de django

El argumento float() debe ser una cadena o un número

En este caso, solo necesito obtener la cantidad de microsegundos transcurridos del campo de fecha y hora almacenado en el objeto para poder continuar con otro cálculo.

¿Alguien sabe qué está pasando y cómo puedo lograr esto?

¡Gracias!

about 3 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error