Django form.isValid() 在自定义用户模型中总是 return false

Django form.isValid() always return false in custom user model

我在 this tutorial 之后在 django 中有一个自定义用户模型。但是当我更新用户时,我收到错误消息 "User with this Email address already exists."。由于我的模型扩展了 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})
if request.method == 'POST':
        if pk:
            selected_user = get_object_or_404(user, pk=pk)
            form = UserChangeForm(request.POST,instance=selected_user)

使用这个