मैं Django में ऑब्जेक्ट्स prefetch_related कैसे कर सकता हूं और मध्यस्थ तालिका में किसी फ़ील्ड द्वारा उन्हें ऑर्डर कर सकता हूं?Django: prefetch_related परिणाम मध्यस्थ तालिका के क्षेत्र द्वारा आदेश दिया गया
यहाँ मॉडल के साथ मैं काम कर रहा हूँ है:
class Node(models.Model):
name = models.CharField(max_length=255)
edges = models.ManyToManyField('self', through='Edge', symmetrical=False)
class Edge(models.Model):
from_node = models.ForeignKey(Node, related_name='from_node')
to_node = models.ForeignKey(Node, related_name='to_node')
weight = models.FloatField(default=0)
एक नोड देखते हुए, मैं संबंधित नोड्स के सभी, वजन द्वारा आदेश दिया prefetch करना चाहते हैं।
जब मैं इस क्वेरी का उपयोग करें:
n = Node.objects.prefetch_related('to_node').order_by('edge__weight').get(name='x')
order_by कोई प्रभाव नहीं है।
संपादित करें:
मेरे सर्वश्रेष्ठ उत्तर अब तक
n = Node.objects.get(name='x')
edges = Edge.objects.filter(from_node=n).prefetch_related('to_node').order_by('weight')
तो बजाय n.edges
पुनरावृत्ति (मैं पसंद करते हैं) के रूप में की है, मैं edges.to_node
आप एज तालिका पर नोड तालिका पर खंड द्वारा ऑर्डर दे रहे हैं। तो, उल्लिखित परिणाम की उम्मीद है। –
वास्तव में, लेकिन किनारे की मेज पर इसे कैसे रखा जा सकता है? –