2012-08-08 13 views
7

In Mongoengine, welcher Wert muss in ReferenceField gesetzt werden. Ich meine, sollten wir in "ObjectId" des Dokuments angeben, auf das Bezug genommen werden soll. Zum Beispielmongoengine- was tun referencefield speichern

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

Das Objekt der Klasse Bar sollte in „foo“ -Attribut haben, welchen Wert gesetzt. Sollte es die ObjectId eines Dokuments in der 'Foo'-Sammlung sein? Kann ich auch ein anderes eindeutiges Feld als Wert im Referenzfeld angeben, welches Feld es ist?

Antwort

10

Vor MongoEngine Version 0.8 speichert es standardmäßig ein DBRef. Für 0.8 und höher speichert es standardmäßig eine ObjectId.

Es gibt einen dbref Parameter, die Sie verwenden sollten, wenn die ReferenceField Erstellung (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 

Hier ist die documentation for the ReferenceField.

Ich habe Version 0.7.9 installiert ist, und wenn ich eine ReferenceField ohne der dbref Parameter, erhalte ich die folgende Warnung:

[...]/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, danke für das Update Freund :) –