index_together Django 1.11 अंतर डेटाबेस अनुक्रमणिका बनाने के लिए नए तरीके प्रदान करता है। अब तक हम प्रत्येक क्षेत्र में db_index=True
था:डेटाबेस अनुक्रमित: db_true, अनुक्रमित के बीच और
# example 1
class Person(models.Model):
name = models.CharField(db_index=True)
age = models.IntegerField(db_index=True)
अब हम models.Index
और class Meta
ब्लॉक के भीतर indexes
घोषित करने की संभावना है - या यहाँ तक कि index_together
।
कहा कि मैं दो शक है:
1. उदाहरण 1 से कोड नीचे दिए गए उदाहरण 2 के रूप में एक ही बात कर रही है?
# example 2
class Person(models.Model):
name = models.CharField()
age = models.IntegerField()
class Meta:
indexes = [
models.Index(fields=['name']),
models.Index(fields=['age'])
]
2. क्या कई क्षेत्रों और index_together
साथ index
के बारे में: बिल्कुल वही बात कर नीचे दिए गए उदाहरणों 3 और 4 कर रहे हैं?
# example 3
class Person(models.Model):
name = models.CharField()
age = models.IntegerField()
class Meta:
indexes = [
models.Index(fields=['name', 'age'])
]
# example 4
class Person(models.Model):
name = models.CharField()
age = models.IntegerField()
class Meta:
index_together = [['name', 'age']]
3 और 4 के बीच 1 और 2 के बीच diferences, और क्या अंतर है? मैं क्या खो रहा हूँ? बहुत धन्यवाद।
बस एक अतिरिक्त प्रश्न: यदि मैं उदाहरण 1 से उदाहरण 2 में बदलता हूं और 'makemigrations' Django चलाता हूं तो मेरी सभी पिछली अनुक्रमणिका को डंप करता है और उन्हें फिर से बनाया जाता है - क्या यह अपेक्षित है? क्यूं कर? – cuducos
मुझे लगता है कि के बारे में थोड़ा अनिश्चित हूँ, लेकिन मुझे लगता है कि Django सिर्फ यह नहीं पता कि उन सुविधाओं से संबंधित हैं, भले ही वे भी वही करता है। जब माइग्रेशन की गणना की जा रही है तो मुझे लगता है कि Django नोटिस करता है कि आपने 'db_index = True' या 'index_together' को छोड़ दिया है, जो इंडेक्स को छोड़ने में अनुवाद करता है। साथ ही Django नोटिस करता है कि आपने 'idexes' जोड़ा और इस प्रकार यह उन्हें बनाता है। ऐसा लगता है कि यह एक दूसरे से जुड़ने में असमर्थ है। यह एक समस्या नहीं होनी चाहिए, जब तक आप वास्तव में बड़े पैमाने पर अनुक्रमित है कि ऐसा करने से निर्मित हो जाएगा। आपको अपने विशेष मामले का मूल्यांकन करना होगा। –
यह एक तरह से मुझे तो हैरानी के रूप में नए 'indexes' सुविधा सिर्फ' db_index' और 'index_together' generalising है। वे उन्हें नए तरीके से संभालने के क्लासिक तरीके का अनुवाद कर सकते थे और कुछ चेक जोड़ सकते थे जो Django को समकक्ष बताते हैं। मुझे लगता है कि कुछ अतिरिक्त तकनीकी कारण हैं जिन्हें मैं नहीं जानता कि उन्होंने उन्हें इस तरह से संभालने का निर्णय क्यों लिया। शायद कोई और यहां कुछ प्रकाश डाल सकता है। –