1

以下のような Mongoengine で双方向の関係を使用する必要があります。

from mongoengine import *

class Notification(Document):
    desc = StringField()
    from_user = ReferenceField('User')

class User(Document):
    Name = StringField()
    notifications = ListField(EmbeddedDocumentField(Notification))

クラスがまだ定義されていない場合、単一引用符で囲まれたクラス名をそこに置くことができることを私は知っています。

from_user = ReferenceField('User')

しかし、ここで問題が発生しました。実行時に、カスタム ユーザー クラスではなく、クラスを mongoengine.django.auth.user として解釈するようです。(これは私が推測したものですが、デバッグモード中の実行時、コレクション内のレコードはカスタムユーザークラスに属しているはずですが、mongoengine.django.auth.user と誤って解釈することがわかりました)

そこで完全修飾クラス名を指定する方法はありますか?

ありがとう!

4

1 に答える 1

0

この場合、Notification クラスの後に User クラスを宣言する必要があります。

内部的に、mongoengine はクラス レジストリを使用します。これは Document メタクラスを介して設定されます。残念ながら、名前空間は Java の世界と同じではありません (そう言うとは思いませんでした!)。私の知る限り、クラスの完全な場所の名前を特定することはできません (例: myapp.models.User)。

django User クラスを使用していますか? 別の User クラスと同様に - 現在、名前ごとに 1 つのクラスしか持てないため、レジストリに問題が発生します。

于 2013-01-23T08:54:15.330 に答える