Удалить конкретного пользователя без использования админ-панели в Django - PullRequest
1 голос
/ 11 июля 2019

Я создал свои модели, используя модель пользователя django. Я могу выполнить функцию редактирования созданной формы. Теперь я хочу сделать УДАЛИТЬ конкретные данные пользователя с помощью кнопки УДАЛИТЬ. Вот мой код

models.py

from django.db import models
from django.contrib.auth.models import User


class UserProfileInfo(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)

    def __str__(self):
        return self.user.username

forms.py

class EditProfileForm(forms.ModelForm):
    class Meta():
        model = User
        fields = ['first_name','last_name','username','email','password']
        help_texts={
            'username': None
        }

views.py

 def delete_profile(request, id):
    profile = UserProfileInfo.objects.filter(id=id)
    if request.method == 'POST':
        profile.delete()
        return HttpResponseRedirect(reverse('signupapp:index'))
    return render(request, "signupapp/delete_profile.html", {'profile': profile})

delete_profile.html

    <form action="" method ="POST">
    {% csrf_token %}
    <p>Are you sure to delete "{{UserProfileInfo.username}}"?</p>
    <input type="submit" value="Delete"/>
</form>

Удалить ссылку кнопки

index.html

<a href="{% url 'signupapp:delete' request.user.id %}"><input type="button" value="Delete"/></a><br>

Когда я запускаю этот код, он работает. Но пользователь, которого я удаляю, не удаляется в базе данных.

Может кто-нибудь помочь мне очистить его. Заранее спасибо ..

1 Ответ

1 голос
/ 11 июля 2019

Вы используете идентификатор пользователя auth для удаления идентификатора профиля пользователя

попробуйте это

from django.contrib.auth.models import User
def delete_profile(request, id):  --> id : is auth user id
    user = User.objects.get(id=id)
    profile = UserProfileInfo.objects.filter(user=user)
    if request.method == 'POST':
        profile.delete()
        User.objects.filter(id=id).delete()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...