आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं।

एक डेटाबेस संबंध विभिन्न डेटाबेस तालिकाओं के बीच संबंध का वर्णन करता है। संबंध निर्धारित करते हैं कि डेटा को कैसे संग्रहीत और पुनर्प्राप्त किया जाए। Django रिलेशनल डेटाबेस सिस्टम (RDBMS) के साथ अच्छा काम करता है। इसलिए, यह डेटाबेस तालिका संबंधों का समर्थन करता है।

संबंधों के प्रकार आपके एप्लिकेशन की आवश्यकताओं और उसके द्वारा मॉडल किए जाने वाले डेटा पर निर्भर करते हैं। Django मॉडल और डेटाबेस के बीच अच्छे संबंध डेटा रखरखाव में सुधार करते हैं। इसमें क्वेरी प्रदर्शन में सुधार करना और डेटा दोहराव को कम करना शामिल है।

तीन मुख्य प्रकार के संबंधों की खोज करके आप जान सकते हैं कि कैसे Django डेटाबेस संबंध एप्लिकेशन के प्रदर्शन को प्रभावित करते हैं।

डेटाबेस संबंध

संबंधपरक डेटाबेस सिस्टम तीन प्रकार के डेटाबेस संबंधों का समर्थन करते हैं। ये संबंध एक-से-अनेक, अनेक-से-अनेक और एक-से-एक हैं। डेटाबेस संबंध का प्रकार आपके एप्लिकेशन के उपयोग के मामलों को प्रभावित करता है।

instagram viewer

Django मॉडल ऐप में डेटाबेस टेबल का प्रतिनिधित्व करें। एक अच्छा डेटाबेस सिस्टम बनाने के लिए आपको टेबल्स के बीच अच्छे संबंध बनाने चाहिए। डेटाबेस संबंध निर्धारित करते हैं कि आपके एप्लिकेशन में डेटा को कैसे स्टोर और प्रस्तुत किया जाए।

डेटाबेस संबंधों को समझने के लिए, से प्रारंभ करें एक Django परियोजना बनाना नाम डाकू। ऐप एक पड़ोस सोशल नेटवर्क होगा। यह आस-पड़ोस की विभिन्न सामाजिक गतिविधियों, सुरक्षा और व्यवसायों का प्रबंधन करेगा।

निवासी पंजीकरण कर सकते हैं, साइन इन कर सकते हैं और प्रोफाइल बना सकते हैं। वे सभी के देखने के लिए पोस्ट और व्यावसायिक विज्ञापन भी बना सकते हैं।

आरंभ करने के लिए, एक डेटाबेस बनाएं जो आस-पड़ोस के सभी डेटा को संग्रहीत करेगा। फिर, आप प्रोफ़ाइल, नेबरहुड, व्यवसाय और पोस्ट मॉडल बनाएंगे। मॉडल बनाने के लिए, आपको डेटाबेस टेबल के लिए आवश्यक संबंध निर्धारित करना होगा।

एक-से-एक डेटाबेस संबंध

एक-से-एक संबंध का अर्थ है एक Django मॉडल में एक रिकॉर्ड दूसरे मॉडल में दूसरे रिकॉर्ड से संबंधित है। दोनों रिकॉर्ड एक दूसरे पर निर्भर हैं। इस मामले में, प्रोफाइल मॉडल पर निर्भर होता है उपयोगकर्ता मॉडल निवासी प्रोफाइल बनाने के लिए।

इसलिए ऐप पर पंजीकृत प्रत्येक निवासी के लिए केवल एक ही प्रोफ़ाइल हो सकती है। साथ ही, उपयोगकर्ता के बिना, कोई प्रोफ़ाइल मौजूद नहीं हो सकती।

से django.db आयात मॉडल
सेdjangoयोगदान.प्रमाणीकरण।मॉडलआयातउपयोगकर्ता

कक्षाप्रोफ़ाइल(मॉडल। नमूना):
उपयोगकर्ता = मॉडल। OneToOneField (उपयोगकर्ता, on_delete=models. कैस्केड, संबंधित_नाम ='प्रोफ़ाइल')
नाम = मॉडल। चारफिल्ड (अधिकतम_लम्बाई =80, रिक्त =सत्य)
जैव = मॉडल। टेक्स्टफिल्ड (max_length=254, रिक्त =सत्य)
प्रोफाइल_पिक्चर = क्लाउडिनरीफिल्ड ('प्रोफ़ाइल फोटो', डिफ़ॉल्ट ='डिफ़ॉल्ट.png')
स्थान = मॉडल। चारफिल्ड (अधिकतम_लम्बाई =50, रिक्त =सत्य, व्यर्थ=सत्य)
ईमेल = मॉडल। ईमेलफ़ील्ड(व्यर्थ=सत्य)

डीईएफ़__str__(खुद):
वापस करना एफ'{खुद.user.username} प्रोफ़ाइल'

Django का उपयोगकर्ता मॉडल Django में एक अंतर्निहित प्रमाणीकरण मॉडल है। आपको इसके लिए कोई मॉडल बनाने की जरूरत नहीं है। इसके बजाय, इसे से आयात करें django.contrib.auth। वन टू वन फील्ड () पर प्रोफाइल मॉडल एक-से-एक संबंध को परिभाषित करता है।

on_delete=models. झरना तर्क इनमें से किसी एक रिकॉर्ड को हटाने से रोकता है। आपको दोनों तालिकाओं से रिकॉर्ड हटाना होगा।

आप अपने ऐप में रिश्ते की कल्पना करने के लिए Django व्यवस्थापक इंटरफ़ेस का उपयोग कर सकते हैं। Django व्यवस्थापक में लॉग इन करने के लिए, आपको एक व्यवस्थापक उपयोगकर्ता के रूप में पंजीकृत होना चाहिए, जिसे a के रूप में जाना जाता है सुपर उपयोगकर्ता.

टर्मिनल पर निम्नलिखित कमांड चलाकर एक सुपरयुजर बनाएं:

अजगरप्रबंधित करना.pycreatesuperuser

आपका उपयोगकर्ता नाम, ईमेल और पासवर्ड दर्ज करने का संकेत दिया जाएगा। ऐसा करने के बाद, सर्वर प्रारंभ करें।

URL का उपयोग करके किसी ब्राउज़र में व्यवस्थापक पृष्ठ खोलें http://127.0.0.1:8000/admin.

आप व्यवस्थापक पृष्ठ देखेंगे जहां आप पहले बनाए गए क्रेडेंशियल्स के साथ लॉग इन कर सकते हैं। एक बार लॉग इन करने के बाद, आप देखेंगे समूह और उपयोगकर्ताओं वस्तुओं। Django प्रमाणीकरण ढांचा इन दो मॉडलों का प्रबंधन करता है। नीचे, आप देखेंगे प्रोफाइल मॉडल।

खोलें प्रोफ़ाइल मॉडल और एक प्रोफ़ाइल जोड़ने के लिए आगे बढ़ें। आप देखेंगे कि यह इस प्रकार प्रकट होता है:

ध्यान दें कि आपके पास उपयोगकर्ता के लिए प्रोफ़ाइल बनाने का विकल्प है। OneToOneField() डेटा प्रकार आपको प्रमाणित उपयोगकर्ताओं के लिए प्रोफाइल बनाने की अनुमति देता है। इस तरह ऐप एक-से-एक संबंधों को प्रबंधित करता है।

एक से कई रिश्ते

एक-से-अनेक संबंध का तात्पर्य है कि एक मॉडल में एक रिकॉर्ड दूसरे मॉडल में कई रिकॉर्ड के साथ संबद्ध होता है। इसे कई-से-एक संबंध के रूप में भी जाना जाता है।

आपके मामले में, एक व्यवस्थापक कई आस-पड़ोस बना सकता है. लेकिन प्रत्येक पड़ोस केवल एक व्यवस्थापक का हो सकता है। ऐसे संबंध को परिभाषित करने के लिए आप फॉरेनकी डेटा प्रकार का उपयोग कर सकते हैं।

Django में एक अंतर्निर्मित व्यवस्थापक इंटरफ़ेस है। आपको इसके लिए कोई मॉडल बनाने की जरूरत नहीं है। व्यवस्थापक के पास सामग्री को प्रबंधित करने और व्यवस्थापक पैनल से ऐप की कल्पना करने का अधिकार है।

कई रिकॉर्ड को समायोजित करने वाले मॉडल में होगा विदेशी कुंजी. यह संबंध को एक-से-कई के रूप में परिभाषित करता है। नीचे दिया गया कोड दिखाता है कि कुंजी को कहां रखा जाए।

कक्षाअड़ोस-पड़ोस(मॉडल। नमूना):
व्यवस्थापक = मॉडल। विदेशी कुंजी("प्रोफ़ाइल", on_delete=models. कैस्केड, संबंधित_नाम ='कनटोप')
नाम = मॉडल। चरफ़ील्ड (अधिकतम_लम्बाई = 50)
स्थान = मॉडल। चरफ़ील्ड (अधिकतम_लम्बाई = 60)
हुड_लोगो = क्लाउडिनरीफ़ील्ड ('hone_logo', डिफ़ॉल्ट ='डिफ़ॉल्ट.png')
विवरण = मॉडल। पाठ्य से भरा()
health_tell = मॉडल. पूर्णांक फ़ील्ड (व्यर्थ=सत्य, रिक्त =सत्य)
पुलिस_नंबर = मॉडल। पूर्णांक फ़ील्ड (व्यर्थ=सत्य, रिक्त =सत्य)
गणना = मॉडल। पूर्णांक फ़ील्ड (व्यर्थ=सत्य, रिक्त =सत्य)

डीईएफ़__str__(खुद):
वापस करना एफ'{खुद.name} हुड'

आप चित्र में दिखाए गए अनुसार ऐप पर संबंध देख सकते हैं:

अड़ोस-पड़ोस मॉडल में अब एक व्यवस्थापक है। आस-पड़ोस बनाने के लिए किसी के भी पास व्यवस्थापकीय अधिकार होने चाहिए. और एक पड़ोस में कई प्रशासक नहीं हो सकते।

मैनी-टू-मैनी डेटाबेस संबंध

अनेक-से-अनेक संबंधों में, एक मॉडल में कई रिकॉर्ड दूसरे में अन्य के साथ संबद्ध होते हैं। उदाहरण के लिए, द डाक और व्यवसाय मॉडल में एक दूसरे के कई रिकॉर्ड हो सकते हैं। उपयोगकर्ता अपने पोस्ट में कई व्यावसायिक विज्ञापन बना सकते हैं और इसके विपरीत।

हालाँकि, कई-से-अनेक संबंध बनाने से गलत डेटा हो सकता है। अन्य रूपरेखाओं में, आपको दो तालिकाओं में शामिल होने के लिए एक नई तालिका बनानी होगी।

Django के पास इसका समाधान है। जब आप मैनी-टू-मैनी फ़ील्ड का उपयोग करते हैं, तो यह दो तालिकाओं को एक साथ मैप करते हुए एक नई तालिका बनाता है. आप मैनी-टू-मैनी फ़ील्ड को दोनों में से किसी भी मॉडल में रख सकते हैं, लेकिन यह दोनों मॉडल में नहीं होना चाहिए।

कक्षाडाक(मॉडल। नमूना):
शीर्षक = मॉडल। चारफिल्ड (अधिकतम_लम्बाई =120, व्यर्थ=सत्य)
पोस्ट = मॉडल। पाठ्य से भरा()
दिनांक = मॉडल। दिनांक समय फ़ील्ड (auto_now_add =सत्य)
उपयोगकर्ता = मॉडल। फॉरेनकी (प्रोफाइल, on_delete=models. कैस्केड, संबंधित_नाम ='post_owner')
हुड = मॉडल। फॉरेनकी (नेबरहुड, on_delete=models. कैस्केड, संबंधित_नाम ='हुड_पोस्ट')
व्यवसाय = मॉडल। कई से कई फ़ील्ड (व्यवसाय)

डीईएफ़__str__(खुद):
वापस करना एफ'{खुद.शीर्षक} पोस्ट'

अब, जब आप देखते हैं डाक व्यवस्थापक पैनल पर मॉडल, आप एक पोस्ट में कई व्यवसाय संलग्न कर सकते हैं।

Django डेटाबेस संबंधों को सरल करता है

आप अपने एप्लिकेशन के लिए जिस प्रकार के डेटाबेस का उपयोग करते हैं, वह निर्धारित करता है कि डेटा का उपयोग कैसे किया जाए। Django के पास एक व्यापक प्रणाली है जो रिलेशनल डेटाबेस को कनेक्ट करना और संचालित करना आसान बनाती है।

Django सुविधाएँ संबंधित तालिकाओं से डेटा को संग्रहीत और पुनर्प्राप्त करना आसान बनाती हैं। इसमें इन-बिल्ट एपीआई है जो आपके ऐप के लिए डेटाबेस संबंध जोड़ता है और बनाता है।

डेटाबेस संबंध आपके एप्लिकेशन के व्यवहार को निर्धारित करते हैं। चाहे आप एक-से-एक, एक-से-अनेक, या अनेक-से-अनेक संबंधों का उपयोग करें, यह आप पर निर्भर करता है।

Django के साथ, आप अपने एप्लिकेशन को तोड़े बिना सुविधाओं को कॉन्फ़िगर और परीक्षण कर सकते हैं। डेटाबेस सिस्टम को सुरक्षित करने और अपने डेवलपर अनुभव को अनुकूलित करने के लिए Django का उपयोग करें।