Django form.isValid()在自定义用户模型中始终返回false

Django form.isValid()在自定义用户模型中始终返回false,django,django-authentication,Django,Django Authentication,我有一个django中的自定义用户模型,如下所示。但当我更新一个用户时,我会收到错误消息“此电子邮件地址的用户已存在”。当我的模型扩展AbstractBaseUser时,这不是django自己处理的吗 我的看法是: @login_required def user_add_edit(request, pk=None): user = get_user_model() if request.method == 'POST': if pk: f

我有一个django中的自定义用户模型,如下所示。但当我更新一个用户时,我会收到错误消息“此电子邮件地址的用户已存在”。当我的模型扩展AbstractBaseUser时,这不是django自己处理的吗

我的看法是:

@login_required
def user_add_edit(request, pk=None):
    user = get_user_model()
    if request.method == 'POST':
        if pk:
            form = UserChangeForm(request.POST)
        else:
            form = UserCreationForm(request.POST)

        if form.is_valid():
            user = form.save(commit=False)
            msg = ''
            if len(user.last_name) > 0:
                user.last_name = user.last_name.title()

            if len(user.first_name) > 0:
                user.first_name = user.first_name.title()

            user.password(user.set_password(request.POST['password2']))
            user.save()

            messages.add_message(request, messages.SUCCESS, 'User  updated with success. %s' % msg)

            data = {'valid': True}
            return JsonResponse(data)
        else:
            data = {'valid': False, 'formMsg': [v for k, v in form.errors.items()]}
            return JsonResponse(data)

    else:
        if pk:
            selected_user = get_object_or_404(user, pk=pk)
            form = UserChangeForm(request.POST or None, instance=selected_user)
        else:
            selected_user = get_user_model()
            form = UserCreationForm(request.POST or None, instance=selected_user, initial={'password1': "", 'password2': "", 'first_name': "", 'last_name': "", 'email': ""})

        return render(request, 'users/add_edit.html', {'form': form, 'selectedUser': selected_user})

使用此

saved my day;)user.set_密码(request.POST['password2'])只需保留此密码
if request.method == 'POST':
        if pk:
            selected_user = get_object_or_404(user, pk=pk)
            form = UserChangeForm(request.POST,instance=selected_user)