0

私の投稿モデルには著者IDのリストがあります

class Post(Document):
   authors_id = ListField(IntField(required=True), required=True)

しかし、デフォルトの Django Userクラスを使用する必要がある場合があります。どのくらいの速さでそれを行うことができますか?

(ユーザーとセッションには sqlite を使用し、その他には MongoDB (mongoengine ODM) を使用しています。理由は聞かないでください:))

私はそれを書き込もうとしました:

def get_authors(self):
    authors = list()
    for i in self.authors_id:
        authors.append(get_user(IntField.to_python(self.authors_id[i])))
    return authors

...そして、「範囲外のリストインデックス」例外が発生します。(著者 ID は実際には空ではありません)。私が間違っていることは何ですか?

4

3 に答える 3

1

to_pythonメソッドについてはわかりませんが、authors_idをループしているため、実行する必要はありません。

authors.append(get_user(IntField.to_python(self.authors_id[i])))

あなたは上手になるはずです

authors.append(get_user(IntField.to_python(i)))
于 2012-07-05T17:58:06.603 に答える
0

それ以外の

IntField.to_python(self.authors_id[i]))

私はあなたがする必要があると思います:

IntField.to_python(i)

Pythonでは、'for i in some_list'構文は、整数インデックスではなく、リストの要素を提供します。

于 2012-07-05T17:58:00.820 に答える
0

あなたはこのエラーが発生していると言いました:

and unbound method to_python() must be called with IntField instance as first argument (got int instance instead)

MongoEngine から同様のエラーが発生しました。私の場合、問題は次のようにフィールドを定義したことでした:

foo_id = IntField

それを定義する正しい方法は次のとおりです。

foo_id = IntField()

括弧を追加すると、問題はなくなりました。

于 2013-12-12T01:34:04.860 に答える