Sarà più facile farlo con un modello di dati più normalizzato. Prendi in considerazione l'utilizzo di un approccio come questo:
class NodeGroup(model.Model):
pass
class NodeHealth(model.Model):
node_group = models.ForeignKey(NodeGroup, related_name='nodes')
health_time = models.IntegerField()
status = models.IntegerField()
Quindi potresti farlo:
from django.db.models import Max, F
nodes = NodeHealth.objects.all().annotate(
max_health_time=Max('node_group__nodes__health_time')
).filter(health_time=F('max_health_time'))
Sfortunatamente a quel punto, i nodi restituiti avranno dei duplicati in base se più di un nodo ha lo stesso valore per health_time
. Potresti essere in grado di aggiungere un .distinct('node_group_id')
questo potrebbe chiarirlo, ma non sono positivo al 100%.