Django как деактивировать учетную запись пользователя

Допустим, я хочу деактивировать определенную учетную запись пользователя, когда пользователь нажимает кнопку Deactivate Account.

Как мне это сделать?

\\\views.py

def delete_view(request):

    profile = request.user

    if request.method == 'POST':
        form = DeleteUserForm(request.POST, request.FILES, instance=profile)
        if form.is_valid():
            profile.is_active = False
            return redirect('/')
    else:
        form = DeleteUserForm(instance=profile)

    return render(request, 'delete.html', {'form': form, 'profile': profile})

\\\forms.py

class DeleteUserForm(forms.Form):
    delete = forms.CharField(
        label='', max_length=0).widget = forms.HiddenInput()

Код был просто попыткой, но не работает из-за экземпляра, поэтому вы можете убрать экземпляр

Из official документации is_active

Указывает, следует ли считать эту учетную запись пользователя активной. Мы рекомендуем установить этот флаг в False вместо удаления учетных записей; таким образом, если в ваших приложениях есть внешние ключи к пользователям, внешние ключи не сломаются

.

Вы можете установить is_active статус для False этого specific user. Вы можете deactivate этого конкретного пользователя, предоставив username этого пользователя в вашем views, поскольку username уникален, вы можете передать username и deactivate этому конкретному пользователю, как показано ниже:

def delete_view(request, username):    
    try:
        u = User.objects.get(username=username)
        u.is_active = False
        u.save()
        return HttpResponse() #<--- after successful deactivation of user           
    except User.DoesNotExist:
        return HttpResponse() #<--- if user does not exists with provided username
    except Exception as e: 
        return HttpResponse() #<---- if some exception occurs
Вернуться на верх