/ / django queryset - classifica e filtra per valore - python, django, python-3.x, modelli django, django-queryset

django queryset - classifica e filtra per valore - python, django, python-3.x, modelli django, django-queryset

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"))