NDB

2012-04-09 8 views
7

में एक-से-अनेक उदाहरण मैं छात्रों और विषयोंNDB

class Subject(ndb.Model): 
    name = ndb.StringProperty() 

class Student(ndb.Model): 
    name = ndb.StringProperty() 
    subject = ndb.KeyProperty(kind=Subject) 

एक छात्र कई विषयों की तरह हो सकता है ndb.Model वर्ग बनाने के लिए कोशिश कर रहा हूँ। इस मॉडल में इन्हें कैसे जोड़ें और स्टोर करें। मुझे इसका कोई उदाहरण नहीं मिला। स्ट्रिंग प्रॉपर्टी के लिए .. फील्ड प्रॉपर्टी i.e. repeat = true

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

+3

हल। के रूप में मॉडल में जोड़ा गया: 'विषय = ndb.KeyProperty (तरह = अधीन रहते हुए, बार-बार = सच)' और फिर जब method..in छात्र वस्तु जोड़ने बस जोड़ने एसटीडी = छात्र() sub1 = विषय() sub2 = विषय() sub1.put() sub2.put() std.subject.append (sub1) std.subject.append (sub2) std.put() – Anjana

+0

आप अगर जानते हो थोक लोडर आयात ट्रांसफॉर्म का उपयोग करके बार-बार गुण अपलोड करने का एक तरीका है? – mehulkar

+0

अंजना सुधार के साथ आपकी टिप्पणी में, क्या आपको std.subject.append (sub2.key()) करना नहीं है? – Milwaukoholic

उत्तर

1

विषय को कुंजी के रूप में उपयोग करें।

me = Student(key_name='KurzedMetal') 
programming = Subject(key_name='Programming') 
programming.put() 
me.subject = programming.key() 
me.put() 
+0

एक चेतावनी देते हैं, नाम प्राप्त करने के लिए आपको कुंजी() विधि() उदाहरण के लिए उपयोग करना चाहिए (उदाहरण के लिए: "me.key()। नाम() "), यदि आप चाहें तो key_name को नाम संपत्ति में सहेजने के लिए एक कन्स्ट्रक्टर जोड़ सकते हैं। – KurzedMetal

+0

धन्यवाद KurzedMetal। इसकी प्रशंसा करना। मैं जो खोज रहा हूं वह यह है कि यदि छात्र एक से अधिक विषयों से जुड़े हैं। यानी यदि छात्र ** प्रोग्रामिंग ** और ** डीबीएमएस ** और कई अन्य के साथ भी जुड़ा हुआ है। आप इसे कैसे प्राप्त कर सकते हैं? – Anjana

0

यह एक पुराने प्रश्न की तरह दिखता है। अगर किसी और को वर्तमान में इसकी आवश्यकता है, तो आपको Structured Propertieshttps://developers.google.com/appengine/docs/python/ndb/properties#structured पर देखना चाहिए। उदाहरण बहुत स्पष्ट और पालन करने में आसान है।

+2

संरचित गुण 1 से कई रिश्तों की सटीक भूमिका को भरते नहीं हैं, क्योंकि आप पते (उस उदाहरण में) से कुछ और नहीं जोड़ सकते हैं। – zigdon

+1

यह सिर्फ एक संपत्ति की संरचना को लागू करता है, यह एक से कई रिश्तों को नहीं बनाता है। – foundatron

8

जब मुझे 1 से अधिक की आवश्यकता होती है तो मैं दोहराई गई कुंजीप्रॉपर्टी का उपयोग करता हूं। कोड:

class Subject(ndb.Model): 
    name = ndb.StringProperty() 

class Student(ndb.Model): 
    name = ndb.StringProperty() 
    subjects = ndb.KeyProperty(kind='Subject', repeated=True) 

टेम्पलेट:

{% for subject in student.subjects %} 
    {{subject.get().name}} 
{% endfor %} 

NDB NoSQL है ताकि आप बच्चे में माता पिता के संदर्भ में नहीं मिलेगा। हालांकि, आप इसे इस तरह जोड़ सकते हैं। नया विषय बनाते समय छात्र कुंजी मूल्य निर्धारित करना न भूलें।

class Subject(ndb.Model): 
    name = ndb.StringProperty() 
    student = ndb.KeyProperty(kind='Student') 

class Student(ndb.Model): 
    name = ndb.StringProperty() 
    subjects = ndb.KeyProperty(kind='Subject', repeated=True) 
1

परिभाषा:

class Subject(ndb.Model): 
    name = ndb.StringProperty() 

class Student(ndb.Model): 
    name = ndb.StringProperty() 
    subject = ndb.KeyProperty(kind=Subject,repeated=True) 

उपयोग:

subject1 = Subject() 
subject1.put() 
subject2 = Subject() 
subject2.put() 
student = Student() 
student.subject.append(subject1.key) 
student.subject.append(subject2.key) 
student.put() 
संबंधित मुद्दे