अधिक सामान्यीकृत डेटा मॉडल के साथ ऐसा करने में आपके पास आसान समय होगा। इस तरह के दृष्टिकोण का उपयोग करने पर विचार करें:
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% सकारात्मक नहीं हूं।