Django管理员.编辑用户并保留密码不变 [英] Django admin. Edit user and leave password unchanged

查看:56
本文介绍了Django管理员.编辑用户并保留密码不变的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有自己的自定义用户模型:

I have my custom user model:

class RemoteUser(AbstractUser):

    class Meta:
        verbose_name= 'MyUser'
        verbose_name_plural = 'MyUsers'

    # Custom fields here...

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

How do I set up my user admin form to edit user details hiding the password?

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

即使我从字段中排除了 password ,它也一直为我提供 KeyError'password1'.

Even if I exclude password from fields it keeps giving me KeyError 'password1'.

推荐答案

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

Use ModelForm, its very simple using that. You create a form class for editing user objects, in fields you can specifiy whichever you want to edit. Use this form in view to save the input data and use the context in template to complete the cycle.

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

Forms.py from django.contrib.auth.models import User

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

Views.py

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

Update_userprofile.html

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

这篇关于Django管理员.编辑用户并保留密码不变的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆