Ще ви е по-лесно да направите това с по-нормализиран модел на данни. Помислете за използването на подход като този:
class NodeGroup(model.Model):
pass
class NodeHealth(model.Model):
node_group = models.ForeignKey(NodeGroup, related_name='nodes')
health_time = models.IntegerField()
status = models.IntegerField()
Тогава можете да направите това:
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'))
За съжаление в този момент върнатите възли ще имат дубликати, ако повече от един възел има една и съща стойност за health_time
. Може да успеете да добавите .distinct('node_group_id')
това може да изясни това, но не съм 100% положителен.