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

Django无需从URL获取projekt_id 查询当前项目关联用户方案

解决方案

1. 调整URL路由配置

首先移除urls.py中该视图对应路径里的projekt_id参数,示例修改:

# 原有带参数的写法删除即可
# path('kapcsolodasok/<int:projekt_id>/', kapcsolodasok, name='kapcsolodasok'),
# 修改后的无参写法
path('kapcsolodasok/', kapcsolodasok, name='kapcsolodasok'),

2. 修改视图函数代码

完整修改后的views.py代码如下,保留了你需要的原生SQL查询逻辑:

from django.contrib.auth.decorators import login_required

# 新增登录验证装饰器,避免匿名用户访问时无profile属性报错
@login_required
def kapcsolodasok(request):
    if request.method == 'POST':
        kap_bar_01 = request.POST.get('kap_bar_01') 
        kap_bar_02 = request.POST.get('kap_bar_02') 
        # 修复原有变量名冲突:视图函数名和实例名重复会导致覆盖报错
        kapcsolat = Kapcsolodasok(
            user_name=request.user, # 补全必填外键字段,修复原代码默认用ID为1的用户的逻辑问题
            kap_bar_01=kap_bar_01, 
            kap_bar_02=kap_bar_02
        )
        kapcsolat.save()

    # 直接从当前登录用户关联的Profile中获取绑定的projekt_id
    current_projekt_id = request.user.profile.projekt_id
    related_users = Profile.objects.raw('SELECT  stressz_profile.id, last_name, first_name, stressz_profile.projekt_id FROM stressz_projekt JOIN stressz_profile ON stressz_projekt.id = stressz_profile.projekt_id JOIN auth_user ON auth_user.id = stressz_profile.user_id WHERE stressz_projekt.id = %s', [current_projekt_id])  

    context = {
        'related_users': related_users,
    }
    return render(request, 'stressz/kapcsolodasok.html', context)

核心逻辑说明

由于你的User和Profile是一对一关联,Profile和Projekt是外键关联,所以直接通过request.user.profile.projekt_id就能拿到当前登录用户所属的项目ID,完全不需要从URL参数获取。

注意事项

请确保所有使用该功能的用户都已经完成了Profile和对应Projekt的绑定,如果存在未绑定项目的用户,可以自行增加异常判断逻辑做跳转或者提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:30:00