django使用自定义表单+显示组名称更新用户个人资料

时间:2019-07-25 11:25:36

标签: django authentication django-forms django-views

我有2个问题:

1)我正在显示带有其用户组的用户列表,并获得用户组名称:]>在模板中使用{{instance.groups.all}}。有什么想法只显示我的群组吗?

2)对于我的更新用户表单,我遇到了一个错误,并且我不知道如何以及在何处解决该问题。

错误:updateUserView()得到了意外的关键字参数'id'

forms.py

class UpdateForm(UserChangeForm):
    is_active = forms.BooleanField()
    Group = [('Viewers', 'Viewers'), ('Editors', 'Editors'), ('Creators', 'Creators'), ]
    group_name = forms.ChoiceField(choices=Group)

    class Meta:
        model = User
        fields = ('email', 'is_active', 'group_name', )

views.py

def updateUserView(request):
    if request.method == 'POST':
        form = UpdateForm(request.POST, instance=request.user)
        if form.is_valid():
            user = form.save()
            group = Group.objects.get(name=request.POST.get('group_name'))
            user.groups.add(group)
            return redirect('accounts:users')
    else:
        form = UpdateForm(instance=request.user)

    return render(request, 'accounts/update_user.html', {'form': form})




class UserView(LoginRequiredMixin, GroupRequiredMixin, ListView):
        template_name = 'accounts/display_users.html'
        group_required = ['Creators']
        queryset = User.objects.filter(is_active=True)

2 个答案:

答案 0 :(得分:0)

代替使用      组= Group.objects.get(名称= request.POST.get('group_name')) 尝试使用      组= form.cleaned_data.get('组')

答案 1 :(得分:0)

要解决错误error: updateUserView() got an unexpected keyword argument 'id' 您需要将ID传递给视图。因为您的网址可能像这样'/user/<int:id>/'

def updateUserView(request, id):
    if request.method == 'POST':
        ........