You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目ID检索错误:获取项目ID而非资料ID的解决方案求助

问题核心原因

你的用户资料页路由需要接收Profil表的主键作为参数,但生成跳转链接时错误传入了Muzyka(项目)表的主键,导致ID匹配错误。

修复步骤
  1. 先修正视图代码的明显错误
    当前MuzykaListView中m = Muzyka.objects.all缺少执行括号,会导致模板接收的是方法对象而非查询集,同时可以增加异常处理和登录校验提升稳定性,修正后代码如下:
from django.shortcuts import get_object_or_404
from django.contrib.auth.decorators import login_required

# 加登录验证避免未登录用户访问时报错
@login_required
def MuzykaListView(request):
    # 用get_object_or_404优化异常处理
    profils = get_object_or_404(Profil, user=request.user)
    muza = Muzyka.objects.all()
    # 补充括号执行查询
    m = Muzyka.objects.all()
    template_name = 'Muzyka_List.html'
    context = {
        'm': m,
        'profils': profils,
        'muza': muza,
    }
    return render(request, template_name, context)
  1. 修正模板中的链接生成逻辑
    原模板中生成用户资料链接时,错误传入了Muzyka实例的主键,需要替换为关联的Profil实例主键,即通过Muzyka表的外键字段wlasciciel获取对应用户资料ID:
<!-- 原错误写法示例 -->
{% url 'profil_uzytkownika' muza.pk %}

<!-- 修正后写法 -->
{% url 'profil_uzytkownika' muza.wlasciciel.pk %}

<!-- 循环渲染项目列表时的写法 -->
{% for muzyka_item in m %}
    <a href="{% url 'profil_uzytkownika' muzyka_item.wlasciciel.pk %}">查看作者资料</a>
{% endfor %}
  1. 确认ShowProfilPage类视图逻辑
    确保你的资料页类视图是基于Profil模型查询,示例正确写法如下:
from django.views.generic import DetailView
from .models import Profil

class ShowProfilPage(DetailView):
    # 指定查询Profil模型,而非Muzyka模型
    model = Profil
    template_name = "你的资料页模板路径.html"
    context_object_name = "profil"

内容的提问来源于stack exchange,提问作者ProtoN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:39:02