私はおそらくこれについてすべて間違っているので、いくつかのガイダンスが必要です。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