Django Academy · पाठ

ForeignKey और on_delete

एक-से-अनेक संबंधों और हटाने के व्यवहार का मॉडल बनाएँ

पाठ 1, कुल 4 में से13 चरण

ForeignKey और on_delete, CoddyKit पर Django Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Django Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Django Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

दो तालिकाओं को जोड़ना

वास्तविक डेटा आपस में जुड़ा होता है: किसी पुस्तक का एक लेखक होता है और किसी आदेश का एक ग्राहक। एक ForeignKey वह तरीका है जिससे एक मॉडल दूसरे मॉडल की ओर संकेत करता है।

एक-से-अनेक का संक्षिप्त परिचय

ForeignKey एक-से-अनेक संबंध को दर्शाता है। एक लेखक की कई पुस्तकें हो सकती हैं, लेकिन प्रत्येक पुस्तक ठीक एक लेखक से संबंधित होती है।

ForeignKey घोषित करना

ForeignKey प्रकार का फ़ील्ड जोड़कर उसे संबंधित मॉडल की ओर इंगित करें। Django पर्दे के पीछे इस संबंध को एक आईडी स्तंभ के रूप में सहेजता है।

class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

_id स्तंभ

डेटाबेस में लेखक का ForeignKey एक author_id स्तंभ बन जाता है, जिसमें दूसरी पंक्ति की प्राथमिक कुंजी रहती है। यही संख्या वास्तविक संबंध होती है।

on_delete आवश्यक है

हर ForeignKey के लिए on_delete आवश्यक है। जिस पंक्ति की ओर यह संकेत करता है, उसके मिटाए जाने पर इस पंक्ति के साथ क्या करना है, यह Django को बताता है।

CASCADE आश्रित पंक्तियाँ मिटाता है

मूल पंक्ति मिटने पर CASCADE यह पंक्ति भी मिटा देता है। किसी लेखक को हटाएँ और उसकी सभी पुस्तकें भी उसके साथ गायब हो जाएँगी।

author = models.ForeignKey(Author, on_delete=models.CASCADE)

PROTECT हटाने से रोकता है

जब तक संबंधित पंक्तियाँ मौजूद हों, हटाने से इनकार करने के लिए PROTECT का उपयोग करें। Django मूल पंक्ति हटाने के बजाय एक त्रुटि उत्पन्न करता है।

author = models.ForeignKey(Author, on_delete=models.PROTECT)

SET_NULL आश्रित पंक्ति को बनाए रखता है

SET_NULL पंक्ति को बनाए रखता है, लेकिन संबंध मिटाकर स्तंभ का मान NULL कर देता है। इसे काम करने के लिए फ़ील्ड में null=True होना आवश्यक है।

author = models.ForeignKey(Author, null=True, on_delete=models.SET_NULL)

SET_DEFAULT और DO_NOTHING

SET_DEFAULT फ़ील्ड के डिफ़ॉल्ट मान का उपयोग करता है, जबकि DO_NOTHING निर्णय डेटाबेस पर छोड़ देता है। इनका उपयोग केवल विशेष परिस्थितियों में करें।

संबंधित ऑब्जेक्ट तक पहुँचना

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

book = Book.objects.first()
print(book.author.name)

संबंध के आर-पार फ़िल्टर करना

क्वेरी में संबंध के आर-पार जाने के लिए डबल अंडरस्कोर का उपयोग करें। filter से सीधे संबंधित मॉडल के फ़ील्ड तक पहुँचें।

Book.objects.filter(author__name="Ada")

त्वरित जाँच

आप किसी लेखक को हटाना चाहते हैं, लेकिन उसकी पुस्तकें बिना संबंध के बनी रहें। कौन-सा on_delete मान उपयुक्त होगा?

पुनरावलोकन

बहुत अच्छा! ForeignKey एक-से-अनेक संबंधों को दर्शाता है, और on_delete यह तय करता है कि मूल पंक्ति हटने पर प्रत्येक पंक्ति के साथ क्या होगा। 🔗

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “ForeignKey और on_delete” पाठ निःशुल्क है?

हाँ — Django Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “ForeignKey और on_delete” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Django Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“ForeignKey और on_delete” में मैं क्या सीखूँगा?

एक-से-अनेक संबंधों और हटाने के व्यवहार का मॉडल बनाएँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Django Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Django Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Django Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“ForeignKey और on_delete” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Django Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Django Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. ForeignKey और on_delete
  2. ManyToManyField और Through Models
  3. प्रोफ़ाइल के लिए OneToOneField
  4. related_name और Reverse Lookups
← Django Academy पर वापस जाएँ