Django中Music关联Profile模型后如何正确获取对应用户生成跳转链接
问题解决方法
- 核心错误原因:你当前在模板中传入的
x.pk是Music实例的主键,而profil_user路由要求传入的是Profile模型的主键,只需要通过Music实例的外键字段owner取关联的Profile主键即可。
1. 修复模板代码
替换模板中url的传参,同时补全你原有a标签遗漏的闭合引号,修改后代码如下:
{% for x in m %} {{x}} <a href="{% url 'profil_user' x.owner.pk %}"> CLICK </a> {% endfor %}
2. 可选性能优化
你原有视图层的Music.objects.all()会在每次遍历取owner属性时触发额外的数据库查询,数据量较大时性能较差,可以改为用select_related提前预加载关联的Profile数据:
m = Music.objects.select_related('owner').all()
如果你的需求是仅展示某个指定用户的音乐数据,只需要在查询时加过滤条件即可,示例如下(假设指定用户的主键为target_user_pk):
m = Music.objects.filter(owner_id=target_user_pk).select_related('owner').all()
内容的提问来源于stack exchange,提问作者ProtoN
相关产品推荐
相关产品推荐

