Ho un modello con due attributi:
class Fruit(models.Model)
name = models.CharField(max_length=30)
days_left_to_consumption = models.IntegerField()
che mi dà oggetti di database:
{"name":"apple", "days_left_to_consumption": 2},
{"name":"apple", "days_left_to_consumption": 3},
{"name":"pineaple", "days_left_to_consumption": 2},
{"name":"pineaple", "days_left_to_consumption": 1}
Voglio creare queryset per classificare i risultati perAttributo "nome" (ogni nome di frutto diverso si verifica una sola volta) ma si ottiene per ogni oggetto frutta diverso con il valore più alto di "days_left_to_consumption". Il risultato che voglio ottenere dall'esempio superiore è:
{"name":"apple", "days_left_to_consumption": 3},
{"name":"pineaple", "days_left_to_consumption": 2}
Hai qualche idea?
risposte:
1 per risposta № 1È necessario raggruppare gli elementi in base al nome e ottenere il numero massimo di days_left_to_consumption in questo modo:
from django.db.models import Max
fruits = Fruit.objects.values("name").annotate(max_days_left_to_consumption=Max("days_left_to_consumption"))