Du kommer att ha lättare att göra detta med en mer normaliserad datamodell. Överväg att använda ett tillvägagångssätt som det här:
class NodeGroup(model.Model):
pass
class NodeHealth(model.Model):
node_group = models.ForeignKey(NodeGroup, related_name='nodes')
health_time = models.IntegerField()
status = models.IntegerField()
Då kan du göra så här:
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'))
Tyvärr kommer de returnerade noderna att ha dubbletter baserade om mer än en nod har samma värde för health_time
. Du kanske kan lägga till en .distinct('node_group_id')
det skulle kunna reda ut det, men jag är inte 100 % positiv.