我可能在这一切都错了,所以我需要一些指导。我正在使用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 块:配置文件(forname
和avatar
)和用户(for username
)。
我意识到我可以组合这些 JSON 对象,所以我这样做了。
但是现在我无法将参数 in取username
出来。users
mention.js
更新
为了解决这个问题,我username
在我的个人资料模型中添加了一个字段。save
我在覆盖中添加了一些代码,以username
将配置文件模型的自动填充为等于user.username
. 不确定这是否是最好的方法,但它允许@sainaen 的答案起作用。