मेरा प्रश्न एक नया मॉडल इकाई बनाने, और फिर तुरंत बाद इसे पढ़ने के लिए सबसे अच्छा तरीका क्या है, है। उदाहरण के लिए,मैं एक नई मॉडल इकाई कैसे बना सकता हूं, और उसके बाद तुरंत इसे पढ़ सकता हूं?
class LeftModel(ndb.Model):
name = ndb.StringProperty(default = "John")
date = ndb.DateTimeProperty(auto_now_add=True)
class RightModel(ndb.Model):
left_model = ndb.KeyProperty(kind=LeftModel)
interesting_fact = ndb.StringProperty(default = "Nothing")
def do_this(self):
# Create a new model entity
new_left = LeftModel()
new_left.name = "George"
new_left.put()
# Retrieve the entity just created
current_left = LeftModel.query().filter(LeftModel.name == "George").get()
# Create a new entity which references the entity just created and retrieved
new_right = RightModel()
new_right.left_model = current_left.key
new_right.interesting_fact = "Something"
new_right.put()
यह अक्सर की तरह एक अपवाद फेंकता है:
AttributeError: 'NoneType' object has no attribute 'key'
अर्थात नई LeftModel इकाई की पुनर्प्राप्ति असफल रही थी। मुझे इस समस्या का सामना एपेंगेन के साथ कुछ बार हुआ है और मेरा समाधान हमेशा थोड़ा हैकी रहा है। आम तौर पर जब तक इकाई को सफलतापूर्वक पुनर्प्राप्त नहीं किया जाता है, तब तक मैं बस कुछ भी कोशिश या कोशिश करते समय कोशिश करता हूं। मैं यह कैसे सुनिश्चित कर सकते हैं कि मॉडल इकाई हमेशा (जबकि पाश के मामले में) अनंत लूप के जोखिम को चला रहे हैं या मेरी कोड अप खिलवाड़ (बयानों को छोड़कर कोशिश के मामले में) के बिना लिया गया है?
सिर्फ एक कुंजी LeftModel के लिए निर्माण पर बजाय स्वचालित रूप से उत्पन्न एक का उपयोग कर की स्थापना की। –
+1 अच्छी तरह से कहा गया है समस्या – msw