Django管理员.编辑用户并保留密码不变 [英] Django admin. Edit user and leave password unchanged
问题描述
我有自己的自定义用户模型:
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屋!