स्थगित टिप्पणी
स्व-संदर्भित नमूना
जब आप संबंध बनाने के लिए घोषणा के दौरान एक ही नमूना को संदर्भित करना चाहते हैं, तो आपको संदर्भित नमूना को ForRके रूप में घोषित करने की आवश्यकता है, क्योंकि घोषणा के दौरान वर्ग तैयार नहीं है और पायथन आपको डिफ़ॉल्ट रूप से इसका संदर्भ नहीं देगा।
यद्यपि आप भविष्य के एनोटेशन या बस संदर्भ नामों का उपयोग करना चाह सकते हैं, "यह काम नहीं करेगा क्योंकि ormar का उपयोग स्पष्ट रूप से घोषित ForRके साथ किया जाना है।
सबसे पहले, आपको इनपुट से आवश्यक संदर्भ आयात करने की आवश्यकता है।
1 | |
अब हमें एक नमूना नमूना और उसी नमूना के संदर्भ की आवश्यकता है, जिसका उपयोग स्व-संदर्भित संबंध बनाने के लिए किया जाएगा।
1 2 3 4 5 6 7 8 9 10 11 | |
यह इत्ना आसान है। लेकिन नमूना का उपयोग करने से पहले, आपको मैन्युअल रूप से संदर्भों को अपडेट करने की आवश्यकता है ताकि वे वास्तविक नमूना उत्पन्न करें।
!!!चेतावनी: यदि आप संदर्भ को अपडेट किए बिना नमूना का उपयोग करने का प्रयास करते हैं, तो एक Moअपवाद फेंक दिया जाता है। इसलिए, उपरोक्त उदाहरण में, निम्नलिखित जैसी किसी भी कॉल के परिणामस्वरूप अपवाद होगा python # creation of model - exception await Person.objects.create(name="Test") # initialization of model - exception Person2(name="Test") # usage of model's QuerySet - exception await Person2.objects.get()
संदर्भ अपडेट करने के लिए, सभी संबंधित मॉडल घोषित करने के बाद ही आगे के संदर्भों के साथ प्रत्येक नमूना पर अपडेट \ _ आगे \ _ रीफ्स विधि को कॉल करें।
इसलिए, क्रमबद्ध करना हमारे पिछले उदाहरण को ठीक से काम करने के लिए, हमें केवल एक अतिरिक्त लाइन की आवश्यकता है।
1 2 3 4 5 6 7 8 9 10 11 12 | |
बेशक, मापदंडों के लिए और उसके माध्यम से, एक ही संक्रिया बिल्कुल उसी तरह से MToसंबंध पर किया जा सकता है।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
क्रॉस-नमूना संबंध
स्व-संदर्भित नमूना के रूप में एक ही तंत्र और तर्क का उपयोग कई अलग-अलग मॉडलों को एक दूसरे से जोड़ने के लिए किया जा सकता है।
बेशक, ormar निर्दिष्ट का उपयोग करके आपके लिंक संबंध के दोनों पक्षों के लिए एक रिवर्स संबंध बनाएगा (or default) संबंधित \ _ नाम।
हालांकि, अगर आपको tw की आवश्यकता हैo (or more) किसी भी दो मॉडल के बीच संबंध, जो भी कारण से, उस संबंध को दोनों पक्षों पर संग्रहीत किया जाना चाहिए (इसलिए एक नमूना पर एक संबंध घोषित करें और दूसरे पर दूसरा), आपको इसे प्राप्त करने के लिए ForRका उपयोग करने की आवश्यकता है।
निम्नलिखित सरल उदाहरण पर एक नज़र डालें।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
!!! चेतावनी याद रखें कि कोई फर्क नहीं पड़ता कि कितने रिश्ते परिभाषित किए गए हैं, संबंधित \ _ नाम संबंधित नमूना में अद्वितीय होना चाहिए।