Mit einem stärker normalisierten Datenmodell wird Ihnen dies leichter fallen. Erwägen Sie einen Ansatz wie diesen:
class NodeGroup(model.Model):
pass
class NodeHealth(model.Model):
node_group = models.ForeignKey(NodeGroup, related_name='nodes')
health_time = models.IntegerField()
status = models.IntegerField()
Dann könnten Sie Folgendes tun:
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'))
Leider weisen die zurückgegebenen Knoten an diesem Punkt Duplikate auf, wenn mehr als ein Knoten den gleichen Wert für health_time
hat . Möglicherweise können Sie eine .distinct('node_group_id')
hinzufügen das könnte das klären, aber ich bin nicht 100 % sicher.