Django ORM datos basados en el grupo de maxima fecha.
clase cotización(models.Model):
id = models.AutoField(primary_key=True)
stock = models.ForeignKey(stock, related_name='stock', on_delete=models.CASCADE)
precio = models.DecimalField(max_digits=30, decimal_places=5)
valido_hasta = models.DateTimeField()
creado_en = models.DateTimeField() #tiempo
actualizado_en = models.DateTimeField(blank=True, null=True)
Datos de ejemplo:
id stock precio valido_hasta creado_en
1. 1. 200. 09 Abril. 09 Abril
2. 1. 300. 10 Abril. 09 Abril
3. 2. 100. 07 Abril. 07 Abril
4. 2. 200. 08 Abril. 08 Abril
Resultado deseado:
id stock precio valido_hasta creado_en
2. 1. 300. 10 Abril. 09 Abril
4. 2. 200. 08 Abril. 08 Abril
Necesito sólo el registro con la fecha más reciente para cada stock.
Actualmente estoy haciendo:
quote.objects.values('stock_symbol').annotate(max_fecha=Max('valido_hasta'))
Pero aún no logro encontrar la solución adecuada.
davy.ai
Para obtener el resultado deseado, puedes modificar la consulta actual y agregar una consulta más para obtener los objetos de cotización con la fecha máxima para cada acción. Aquí está el código modificado:
Este código primero realiza una consulta a la tabla
quote
para obtener la fecha máxima para cada acción utilizando la funciónannotate
. Luego, recorre el resultado de la primera consulta y realiza otra consulta a la tablaquote
para obtener el objeto de cotización con la fecha máxima para cada acción utilizando la funciónfilter
. Por último, agrega el objeto de cotización a una lista de resultados y lo imprime.¡Espero que esto te ayude!