代码之家  ›  专栏  ›  技术社区  ›  decadenza

Django管理员。编辑用户并保持密码不变

  •  0
  • decadenza  · 技术社区  · 7 年前

    class RemoteUser(AbstractUser):
    
        class Meta:
            verbose_name= 'MyUser'
            verbose_name_plural = 'MyUsers'
    
        # Custom fields here...
    

    如何设置我的用户管理窗体以编辑隐藏密码的用户详细信息?

    class RemoteUserForm(UserCreationForm):
        # What do I put here?
    

    即使我排除 password KeyError 'password1' .

    1 回复  |  直到 7 年前
        1
  •  0
  •   ans2human    7 年前

    使用 ModelForm ,使用它非常简单。您可以创建一个表单类来编辑用户对象,在字段中可以指定要编辑的对象。在视图中使用此窗体保存输入数据,并使用模板中的上下文完成循环。

    Forms.py 从django.contrib.auth.models导入用户

    class EditUserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = {'username'}
    

    Views.py

    def update_userprofile(request, pk):
        user = User.objects.get(pk=pk)
        user_form = EditUserForm(instance=user)
        if request.user.id == user.id:
            if request.method == "POST":
                user_form = EditUserForm(request.POST, instance=user)
                if user_form.is_valid():
                    created_user = user_form.save(commit=False)
                    return redirect('someview') #wherever you want
    
            return render(request, "app_name/update_userprofile.html", {
                "noodle": pk,
                "noodle_form": user_form,}
        else:
            raise PermissionDenied
    

    Update_userprofile.html

    <form method="post">
        {% csrf_token %} {{ noodle_form.as_p }}
        <button type="submit">Submit</button>
    </form>