Удаление группы при удалении пользователя django
Я новичок в Django и я создал регистрационную форму, где, когда пользователь регистрируется, она автоматически создает группу с тем же именем, что и имя пользователя, и помещает нового пользователя в нее. Таким образом, каждый пользователь находится внутри уникальной группы пользователей (которая имеет то же имя, что и пользователь в ней).
Теперь моя проблема в том, что если я удалю пользователя, то группа также не будет удалена. Есть ли способ автоматизировать этот процесс? То есть, удалить пользователя --> удалить группу, в которой он/она был/была?
Мой код
views.py
@unauthenticated_user
def register_user(request):
if request.method == "POST":
form = RegisterUserForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data['username']
password = form.cleaned_data['password1']
user = authenticate(username=username, password=password)
login(request, user)
messages.success(request, "Registration Succesfully")
# every user is inside an unique group with its name
Group.objects.get_or_create(name=username)
group = Group.objects.get(name=username)
group.user_set.add(user)
user.save()
return HttpResponseRedirect('register')
else:
pass
else:
form = RegisterUserForm()
return render(request, 'authenticate/register_user.html', {
'form': form,
})
Решением было использование сигналов внутри models.py, таких как
models.py
from django.dispatch import receiver
from django.db.models.signals import post_delete
from django.contrib.auth.models import Group
@receiver(post_delete, sender=User)
def delete_user_group(sender, instance, *arg, **kwargs):
group = Group.objects.get(name=instance.username)
group.delete()