2012-08-08 13 views
7

In mongoengine quale valore deve essere impostato in ReferenceField. Voglio dire dovremmo fornire in "ObjectId" del documento a cui il riferimento deve essere fatto. Per esempio,mongoengine- cosa fa il referencefield store

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

L'oggetto della classe barra dovrebbe avere ciò che il valore impostato in attributo "foo". Dovrebbe essere l'ObjectId di qualche documento nella collezione 'Foo'? Posso anche impostare qualsiasi altro campo univoco come valore nel campo di riferimento che indica quale campo è?

risposta

10

Prima di MongoEngine versione 0.8, memorizza un DBRef per impostazione predefinita. Per 0.8 e versioni successive, memorizza un ObjectId per impostazione predefinita.

C'è un parametro dbref che si dovrebbe usare quando si crea il ReferenceField (explicit is better than implicit):

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

Ecco il documentation for the ReferenceField.

ho la versione 0.7.9 installato, e quando creo un ReferenceField senza il parametro dbref, ottengo il seguente avvertimento:

[...]/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

Ok, grazie per l'aggiornamento amico :) –