Directus新手求助:如何展示Application与当前用户的ApplicationMark
实现Directus中展示Application与当前用户评分的方案
不需要创建自定义布局或视图,用Directus内置功能就能搞定,具体步骤如下:
1. 确认关联关系配置
先确保你的模型关联逻辑正确:
ApplicationMark中的关联Application字段,设置为多对一关联(一个打分对应一个Application,一个Application可被多个用户打分)ApplicationMark中的user字段,设置为多对一关联到Directus内置的users集合
2. 方案一:在Application详情页展示当前用户评分
适合查看单个Application详情时同步查看自己的评分:
- 进入Directus后台,打开
Application模型的配置页面 - 切换到「布局」标签页,选择「详情」布局
- 点击「添加字段」,选择
ApplicationMark的反向关联字段(默认会生成类似application_marks的字段名) - 点击该字段的「设置」图标,在「筛选」选项中添加条件:
user等于$CURRENT_USER(Directus内置变量,自动匹配当前登录用户) - 调整字段显示设置,只保留「评分」字段的展示,隐藏其他无关内容
- 保存布局后,打开任意Application的详情页,就能看到当前用户给它打的评分(未打分则显示为空)
3. 方案二:在Application列表页直接显示当前用户评分
适合批量查看所有Application及自己的评分:
- 打开
Application模型的配置页面,切换到「字段」标签页 - 点击「创建字段」,选择「计算字段」,类型设为「数字」
- 在「计算值」中输入SQL查询语句(根据你的实际字段名调整):
注:(SELECT rating FROM application_mark WHERE application_mark.application_id = application.id AND application_mark.user_id = $CURRENT_USER LIMIT 1)rating是ApplicationMark的评分字段名,application_id是关联Application的字段名,user_id是关联用户的字段名 - 保存字段后,切换到
Application的「列表」布局,把这个新计算字段添加到显示列中 - 现在列表里就能直接看到每个Application对应的当前用户评分(未打分显示为空)
4. 额外优化:快速打分功能
如果要让用户能直接在Application页面完成打分,可在详情页添加内嵌表单:
- 在
Application的详情布局中,添加一个「内嵌表单」组件,选择ApplicationMark集合 - 设置表单默认值:
application关联当前打开的Application,user默认值设为$CURRENT_USER - 表单只保留「评分」字段,用户打开详情页就能直接提交评分,无需手动选择关联对象
内容的提问来源于stack exchange,提问作者vogdb
相关产品推荐
相关产品推荐

