2012-08-08 5 views
7

mongoengineでは、ReferenceFieldにどの値を設定する必要がありますか。私は、参照が行われるべきドキュメントの "ObjectId"で提供するべきであることを意味する。例えば 、mongoengine-何を参照フィールドストア

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

クラスバーのオブジェクトは、「foo」という属性にに設定どのような値が必要です。 'Foo'コレクションの一部のドキュメントのObjectIdである必要がありますか? また、他の固有のフィールドを参照フィールドの値として設定することはできますか?

答えて

3

DBRefが格納されているため、Fooインスタンスを渡すだけで自動的に変換されます。ドキュメントのセクションを参照してください:http://mongoengine-odm.readthedocs.org/en/latest/guide/defining-documents.html?highlight=referencefield

+0

おかげで、私は、彼らは、バージョン0.6のための彼らのドキュメントを更新したと思い、チームメイトを.20。私は0.6.20を使用していましたが、私はそれを更新します。 –

10

MongoEngineバージョン0.8より前のバージョンでは、デフォルトでDBRefが保存されています。 0.8以降では、デフォルトでObjectIdを格納します。

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です:

はReferenceField(explicit is better than implicit)を作成するときに使用すべきdbrefパラメータがあります。

私はバージョン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

更新情報 –