在Django中更改is_superuser字段

时间:2014-09-11 09:31:43

标签: python django

我有一个名为“Reviewers”的表,它是普通的Django auth_users,他们或者是超级用户。这是在is_superuser字段(来自django.contrib.auth

中声明的

我编写了此函数来更改使用复选框选择的每个审阅者的超级用户状态:

def change_su(request):

    if request.method == 'POST':
        ids = request.POST.getlist('selected')

        for id in ids:
            try:
                rev = Reviewer.objects.get(pk=id)
                if rev.is_superuser == 1:
                    rev.is_superuser = 0
                    messages.info(request, _('User with id %(id)s is no superuser anymore') % {'id': id})
                else:
                    rev.is_superuser = 1
                    messages.info(request, _('User with id %(id)s is now superuser') % {'id': id})

            except Exception as e:
                logging.getLogger(__name__).exception(e)
                messages.error(request, _('Failed to change superuser status for reviewer with id %(id)s') % {'id': id})

 return HttpResponseRedirect(reverse('admin_index'))

如果我选择一个用户并单击调用此函数的按钮,则会显示“User with id ..不再是超级用户”或“具有id ..的用户现在是超级用户”,因此该函数会识别{{ 1}}字段,可以读取其中的内容。但是,超级用户状态保持不变。

这是某种特殊领域,我无权改变吗?

修改:以下是修正后的代码。谢谢Daniel!

is_superuser

1 个答案:

答案 0 :(得分:2)

您似乎无法在任何地方呼叫rev.save(),因此更改不会保留在数据库中。