2012-08-08 10 views
7

में mongoengine में संदर्भ फ़ील्ड में क्या मूल्य निर्धारित किया जाना चाहिए। मेरा मतलब है कि हम दस्तावेज़ के "ऑब्जेक्टआईडी" में प्रदान करना चाहिए जिसमें संदर्भ होना है। उदाहरण के लिए,mongoengine- संदर्भ फ़ील्ड स्टोर

class Bar(Document): 
    content = StringField() 
    foo = ReferenceField('Foo') 

वर्ग बार का उद्देश्य क्या मूल्य "foo" विशेषता में करने के लिए सेट होना चाहिए। क्या यह 'फू' संग्रह में कुछ दस्तावेज़ों का ऑब्जेक्ट आईडी होना चाहिए? क्या मैं संदर्भ क्षेत्र में किसी भी अद्वितीय क्षेत्र को एक मान के रूप में सेट कर सकता हूं जिसका उल्लेख यह है कि यह कौन सा क्षेत्र है?

उत्तर

3

यह एक डीबीआरआईफ़ स्टोर करता है, आपको बस एक फू इंस्टेंस पास करने की आवश्यकता है और इसे स्वचालित रूप से परिवर्तित कर दिया जाएगा। दस्तावेज़ों में अनुभाग देखें: http://mongoengine-odm.readthedocs.org/en/latest/guide/defining-documents.html?highlight=referencefield

+0

धन्यवाद संभोग, मुझे लगता है वे संस्करण 0.6 के लिए उनके डॉक्स अद्यतन किया है .20। मैं 0.6.18 का उपयोग कर रहा था, हालांकि मैं इसे अपडेट करूँगा 0.6.20 धन्यवाद दोस्त के लिए बहुत बहुत धन्यवाद। –

10

MongoEngine संस्करण 0.8 से पहले, यह डिफ़ॉल्ट रूप से एक डीबीआरएफ स्टोर करता है। 0.8 और बाद के लिए, यह डिफ़ॉल्ट रूप से ऑब्जेक्ट आईडी को संग्रहीत करता है।

class Bar(Document): 
    content = StringField() 
    foo = ReferenceField('Foo', dbref = True) # will use a DBRef 
    bar = ReferenceField('Bar', dbref = False) # will use an ObjectId 

यहाँ documentation for the ReferenceField है:

एक dbref पैरामीटर है कि आप ReferenceField (explicit is better than implicit) बनाते समय का उपयोग करना चाहिए नहीं है।

मैं संस्करण 0.7.9 स्थापित किया है, और जब मैंdbref पैरामीटर के बिना एक ReferenceField बनाने के लिए, मैं निम्नलिखित चेतावनी मिलती है:

[...]/lib/python2.7/site-packages/mongoengine/fields.py:744: FutureWarning: 
ReferenceFields will default to using ObjectId strings in 0.8, set DBRef=True 
if this isn't desired 
warnings.warn(msg, FutureWarning) 
+0

ठीक है, अद्यतन दोस्त के लिए धन्यवाद :) –

संबंधित मुद्दे