modelo
class quote(models.Model): id = models.AutoField(primary_key=True) stock = models.ForeignKey(stock, related_name='stock', on_delete=models.CASCADE) price = models.DecimalField(max_digits=30,decimal_places=5) valid_till = models.DateTimeField() created_at = models.DateTimeField() #time updated_at = models.DateTimeField(blank=True,null=True)ex datos
id stock price valid_till created_at 1. 1. 200. 09 April. 09 April 2. 1. 300. 10 April. 09 April 3. 2. 100. 07 April. 07 April 4. 2. 200. 08 April. 08 Aprildeseo de salida
id stock price valid_till created_at 2. 1. 300. 10 April. 09 April 4. 2. 200. 08 April. 08 AprilSolo necesito registrar la fecha máxima de cada acción
actualmente haciendo quote.objects.values('stock__symbol').annotate(max_date=Max('valid_till'))
pero aún no puedo pensar en una solución adecuada
Aquí hay dos métodos para obtener la(s) cotización(es) con fecha máxima. Usando ese conjunto de consultas, puede encontrar cualquier instancia de modelo relacionado que necesite.
# returns a dict containing your max_date aggregation = quote.objects.aggregate(max_date=Max('valid_till')) # get max_date from dict max_date = aggregation['max_date'] #filter quotes based on max_date max_date_quotes = quote.objects.filter(valid_till = max_date) max_date_quote = quote.objects.all().order_by('-valid_till').first()