Jak zablokować usuwanie przez superuser innych superuserów?

0
`def delete_selected(modeladmin, request, queryset):
    if not modeladmin.has_delete_permission(request):
       raise PermissionDenied
    if request.POST.get('post'):
       for obj in queryset:
          if not obj.is_superuser:
            obj.delete()
   else:
       return delete_selected_(modeladmin, request, queryset) delete_selected.short_description = "Delete selected objects"`

and urls.py

path("admin/auth/user/",delete_selected), 
0

Pobierz sobie użytkownika, którego chcesz usunąć User.objects.get(id=id) i sprawdź czy ma ustawionego superusera. Kod przypomina mi django - daltego taka sugestia. Jak nie, to wstaw w/w fetcha do bazy po użytkownika.

0

Zrobiłem coś takiego ale nie działa

class CustomUser(AbstractUser):

    def delete(self):
        list = AbstractUser.objects.filter(is_active=True).count()
        if not self.is_superuser:
            temp(self)
        elif self.is_superuser:
            if not list[-1]:
                temp(self)
        else:
            raise ValidationError("You can't delete superuser")

Ale wywala mi błąd:

charity_donat.Donation.user: (fields.E301) Field defines a relation with the model 'auth.User', which has been swapped out.
	HINT: Update the relation to point at 'settings.AUTH_USER_MODEL'.

0

Doradzono mi by zrobic cos takiego ale nie dziala.Jezeli superuser jest ostatnim w liscie superuserów to nie moze zostac usuniety.
models.py

class CustomUser(AbstractUser):

    def delete(self):
        amount = AbstractUser.objects.filter(is_active=True).count()
        if self.is_superuser:
            if amount>1:
                super().delete()
        else:
            raise ValidationError("You can't delete yourself")

1 użytkowników online, w tym zalogowanych: 0, gości: 1