2012-08-08 6 views
7

En mongoengine qué valor se debe establecer en ReferenceField. Quiero decir que deberíamos proporcionar en "ObjectId" del documento al que se va a hacer la referencia. Por ejemplo,mongoengine- qué hace la tienda del campo de referencia

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

El objeto de la clase barra debe tener lo que el valor establecido en el atributo "foo". ¿Debería ser el ObjectId de algún documento en la colección 'Foo'? También puedo establecer cualquier otro campo único como un valor en el campo de referencia mencionando qué campo es?

Respuesta

10

Antes de MongoEngine versión 0.8, almacena un DBRef por defecto. Para 0.8 y posterior, almacena un ObjectId de forma predeterminada.

Hay un parámetro dbref que se debe utilizar al crear el 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 

Aquí está la documentation for the ReferenceField.

Tengo la versión 0.7.9 instalado, y cuando creo un ReferenceField sin el parámetro dbref, me sale el siguiente aviso:

[...]/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, gracias por la actualización amigo :) –

Cuestiones relacionadas