1

私はおそらくこれについてすべて間違っているので、いくつかのガイダンスが必要です。mention.js作成中のアプリケーションの投稿でプロファイルをリンクするために使用しています。ハードコードされたデータでこれを機能させるのは簡単です。ドキュメントに書かれている通りに設定するだけです。

私のアプリでは、ログインしている各ユーザーは組織に属しており、この組織は Django から JSON として取得されます。これらのデータを選択するmention.jsドロップダウンを作成して、ユーザーが入力すると組織リストが表示されるようにします。ターミナル コンソールとブラウザ コンソールに JSON を記録しました。

[
    {
        "fields": {
            "avatar": "images/avatars/bob.png", 
            "name": "Bob Jones"
    }, 
        "model": "accounts.profile", 
        "pk": 5
    }, 
    {
        "fields": {
            "avatar": "images/avatars/sam.png", 
            "name": "Sam Smith"
    }, 
        "model": "accounts.profile", 
        "pk": 7
    }
]

だから私はDjangoから正しいデータを取得しています。データを比較的簡単に解析して、ブラウザー コンソールに出力できます。

console.log(profile_array[0].fields.name);

次のステップは、これをmention.js usersパラメーターに入れることです。@sainaenの回答に基づいて、JavaScriptにこれがあります:

users: profile_array.map(function (profile) {
    return {
        username: profile.fields.name, // this still missing
        name: profile.fields.name,
        image: '/media/' + profile.fields.avatar
    };
})

username問題は、私のプロファイルにフィールドがないことです。リレーションシップUserによってモデルにリンクされています。OneToOneしたがって、私の見解では、実際には JSON の 2 つのチャンクを返しています。プロファイル (nameおよびavatar) とユーザー ( username) です。

これらの JSON オブジェクトを組み合わせることができることに気付いたので、それを実行しました。

しかし、現在、 のパラメーターのusername出力を取得するのに問題があります。usersmention.js

アップデート

これを解決するためusernameに、プロファイル モデルにフィールドを追加しました。プロファイル モデルの が と等しくなるように、saveオーバーライドにいくつかのコードを追加しました。これが最善の方法かどうかはわかりませんが、@ sainaenの回答が機能するようになります.usernameuser.username

4

1 に答える 1