首页 > 解决方案 > Django 个人资料编辑权限

问题描述

我有一个问题,我想确保只有登录的评委或演讲者可以编辑他们自己的个人资料,我不太确定是否应该在模板中或视图中更改它。谢谢你的建议,我是新手

这是我给评委的更新视图

@allowed_users(allowed_roles=['judges'])
def updateJudges(request, pk):
    judge = Judges.objects.get(id=pk)
    form = JudgesForm(instance=judge)

    if request.method == "POST":
        form = JudgesForm(request.POST, instance=judge)
        if form.is_valid():
            form.save()
            return redirect('ksm_app:detail', judge.id)

    context = {'form':form}
    return render(request, 'ksm_app/judges_form.html', context)

这是我的更新辩论者观点

def updateDebatants(request, pk):
    debatants = Debatants.objects.get(id=pk)
    form = DebatantsForm(instance=debatants)

    if request.method == "POST":
        form = DebatantsForm(request.POST, instance=debatants)
        if form.is_valid():
            form.save()
            return redirect('ksm_app:debatants_detail', debatants.id)

    context = {'form':form}
    return render(request, 'ksm_app/debatants_form.html', context)

我只想让每个用户都能看到他们的个人资料,但只有一个用户可以编辑他自己的个人资料

标签: pythondjango

解决方案


如果DebatantsandJudges模型有一个ForeignKey(或者OneToOneField对用户模型更好),你可以制作一个pk参数的视图,因为这是由用户指定的

from django.shortcuts import get_object_or_404

def updateDebatants(request):
    debatants = get_object_or_404(Debatants, user=self.request.user)
    if request.method == 'POST':
        form = DebatantsForm(request.POST, request.FILES, instance=debatants)
        if form.is_valid():
            form.save()
            return redirect('ksm_app:debatants_detail', debatants.id)
    else:
        form = DebatantsForm(instance=debatants)
    return render(request, 'ksm_app/debatants_form.html', {'form':form})

对于视图,Judges您可以以类似的方式进行操作。


推荐阅读