Django

2010-02-16 6 views
17

के साथ कंपाउंड/समग्र प्राथमिक/अद्वितीय कुंजी Django का उपयोग करके एक यौगिक (समग्र) प्राथमिक/अद्वितीय कुंजी के साथ आप मॉडलों (और इस प्रकार टेबल) कैसे बना सकते हैं?Django

उत्तर

31

Django यौगिक प्राथमिक कुंजी का समर्थन नहीं करता है। आप Meta.unique_together के साथ एक एकल यौगिक अद्वितीय कुंजी बना सकते हैं।

+0

धन्यवाद इग्नासिओ! इस काम को कई से अधिक रिश्तों के साथ कैसे बनाया जाए? क्या ये काम करेगा? – Viet

+1

मैं वास्तव में एक उत्सुक अद्वितीय कुंजी और कई से अधिक रिश्ते के बीच कनेक्शन पर विश्वास करता हूं कि वास्तव में उत्सुक हूं ... –

+0

कहें कि हमारे पास 2 इकाइयां हैं: छात्र और विषय। छात्र कई विषयों को ले सकते हैं। यौगिक प्राथमिक कुंजी के साथ एक में शामिल होने तालिका: टेबल student_subjects: -------------------------------- student_id subject_id यह एन-टू-एन संबंध बनाने के लिए एक मूल तकनीक है। – Viet

2

एक समग्र कुंजी में एक इकाई घटना की विशिष्ट पहचान करने के लिए एक से अधिक गुण होते हैं। यह उस एक या अधिक विशेषताओं में एक यौगिक कुंजी से भिन्न होता है, जो कुंजी बनाते हैं, अपने स्वयं के दायरे में सरल कुंजी नहीं होते हैं।

उदाहरण के लिए, आपके पास एक सीडी संग्रह रखने वाला डेटाबेस है। इकाइयों में से एक को ट्रैक कहा जाता है, जिसमें सीडी पर पटरियों का विवरण होता है। इसमें सीडी नाम, ट्रैक नंबर की एक समग्र कुंजी है।

4

अगर आप केवल अद्वितीय मिश्रित क्षेत्रों चाहते हैं एक साथ belowcode का उपयोग करें:

class MyTable(models.Model): 
    class Meta: 
     unique_together = (('key1', 'key2'),) 

    key1 = models.IntegerField() 
    key2 = models.IntegerField() 

लेकिन अगर आप अद्वितीय एक साथ और स्तंभ में से एक प्राथमिक होना चाहते हैं, मॉडल स्तंभ के लिए primary तर्क, नीचे दिए गए कोड समान सेट:

class MyTable(models.Model): 
    class Meta: 
     unique_together = (('key1', 'key2'),) 

    key1 = models.IntegerField(primary_key=True) 
    key2 = models.IntegerField()