में इंटरमीडिएट मॉडल फ़ील्ड द्वारा m2m आइटम्स के लिए डिफ़ॉल्ट ऑर्डरिंग मुझे एक असामान्य समस्या है। इस तरह के मॉडल पर विचार करें (Django डॉक्स से लिया गया):Django
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
अब मान लें कि हम बाहर बीटल्स बैंड में 2 बीटल्स के सदस्यों मिल गया है चलो (मध्यवर्ती मॉडल के लिए Django डॉक्स में उदाहरण का पालन करना):
>>> beatles.members.all()
[<Person: Ringo Starr>, <Person: Paul McCartney>]
उपर्युक्त कोड व्यक्ति मॉडल के लिए डिफ़ॉल्ट ऑर्डरिंग द्वारा क्रमबद्ध सदस्यों को वापस कर देगा। यदि मैं निर्दिष्ट करता हूं:
>>> beatles.members.all().order_by('membership__date_joined')
सदस्यों को शामिल तिथि के माध्यम से क्रमबद्ध किया जाता है। क्या मैं इसे इस ManyToMany फ़ील्ड के लिए डिफ़ॉल्ट व्यवहार के रूप में सेट कर सकता हूं? इंटरमीडिएट मॉडल में फ़ील्ड द्वारा संबंधित वस्तुओं का डिफ़ॉल्ट क्रम सेट करना है? ManyRelatedManager में एक init तर्क core_filters प्रतीत होता है, लेकिन मुझे कोई अस्पष्ट विचार नहीं है कि django में पूरे m2m फ़ील्ड के साथ इसे कैसे एक्सेस किया जाए। कोई रचनात्मक विचार? :)
अग्रिम में :)
धन्यवाद मैं एक ticket in django trac खोल दिया है।
यह विधि मेरे लिए अपेक्षा से अधिक रिकॉर्ड लौटाती है। यह एक बाहरी बाएं जॉइन और डेटा डुप्लिकेट बनाने के समाप्त होता है – MrE