python - why model has the key_name don't has the key().id() on google-app-engine -


अगर मैं इसका उपयोग करता हूं:

  class A (db.model): a = db .StringProperty () वर्ग डेमो (BaseRequestHandler): def मिल (स्वयं): a = A () aa = 'sss' a.put () अपवाद उठाना (a.key ()। Id ())   

मैं a.key () प्राप्त कर सकता हूँ। Id () 961

है लेकिन अगर मैं key_name = "aaa" जोड़ता हूं, a.key ()। Id () कोई नहीं होगा : ए = ए (डीबी.मॉडेल): ए = डीबी। स्ट्रिंगप्रॉपर्टी () क्लास डेमो (बेसआरएक्सहैंडलर): डेफ मिल (सेल्फ): ए = ए (कुंजी_नाम = "एएए") एएल = 'Sss' a.put () अपवाद उठाना (a.key ()। Id ())

तो मैं कैसे कुंजी प्राप्त कर सकते हैं ()। Id () जब मैं एक key_name सेट

धन्यवाद

आप ऐसा नहीं कर सकते, क्योंकि वे एक ही बात हैं

तथ्य यह है कि संस्थाओं में एक एन्कोडेड स्ट्रिंग कुंजी है, या तो एक पूर्णांक आईडी या स्ट्रिंग का नाम भ्रामक छाप दे सकता है कि किसी संस्था को संदर्भित करने के विभिन्न तरीके अतिव्यापी हैं या फिर dundant। वे नहीं हैं।

एक कुंजी नाम एक फाइल सिस्टम के अंदर फ़ाइल नाम की तरह है एक आईडी एक फ़ाइल नाम की तरह है जो सिस्टम को स्वचालित रूप से चुना गया है। कुंजी ही निर्देशिका में फाइल सहित संपूर्ण पथ की तरह है।

Key.from_path विधि:

k = key पर विचार करें। प्रकार = उपयोगकर्ता और नाम = बोरिस एक निर्देशिका की तरह है, और प्रकार = पता एंड amp; नाम = 9876 आपकी संस्था वाली फ़ाइल की तरह है। लौटायी जाने वाली कुंजी सिर्फ एक एन्कोडेड संस्करण है जो पथ।

प्रत्येक इंजन पर निर्भर ऐप इंजन एक निश्चित, अपरिवर्तनीय मार्ग है, एक कुंजी है। अगर किसी इकाई को उपयोगकर्ता-निर्दिष्ट नाम और सिस्टम-निर्दिष्ट आईडी दोनों के द्वारा प्रतिनिधित्व किया जा सकता है, तो इसका मतलब होगा कि n पूर्वजों के साथ एक इकाई 2 ^ (n +1) अलग-अलग रास्तों और कुंजियां।


Comments