Reputation: 21
Using a view i want to turn a user into staff, how do i do it. using is_staff just gives me if the user is staff or not.
def createAdmin(request,member_id):
admin_group= Group.objects.get(name='admin')
member = get_object_or_404(Member,pk=member_id)
user = User.objects.get(member = member)
admin_group.user_set.add(user)
user.staff=True
user.save()
This is the code i use to make that user a admin but i don't know how i could give him staff status. user.staff doesn't work.
Upvotes: 1
Views: 111
Reputation: 476557
You set the is_staff
field, so:
from django.shortcuts import get_object_or_404
def createAdmin(request,member_id):
admin_group= get_object_or_404(Group, name='admin')
member = get_object_or_404(Member,pk=member_id)
user = get_object_or_404(User, member=member)
admin_group.user_set.add(user)
user.is_staff = True
user.save()
You should do this only in case of a POST request, since a GET request is not supposed to have side effects. In order to make it a super user as well, you can set the .is_superuser
:
from django.shortcuts import get_object_or_404
def createAdmin(request,member_id):
admin_group= get_object_or_404(Group, name='admin')
member = get_object_or_404(Member,pk=member_id)
user = get_object_or_404(User, member=member)
admin_group.user_set.add(user)
user.is_staff = True
user.is_superuser = True
user.save()
Note: You can limit views to POST requests with the
@require_POST
decorator [Django-doc].
Upvotes: 2