首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改Django中的is_superuser字段

更改Django中的is_superuser字段
EN

Stack Overflow用户
提问于 2014-09-11 09:31:42
回答 1查看 507关注 0票数 0

我有一个名为“审阅者”的表,它是普通的Django auth_users,他们要么是超级用户,要么不是超级用户。这是在is_superuser字段中声明的(来自django.contrib.auth)

我编写这个函数是为了更改使用复选框选中的每个审阅者的超级用户状态:

代码语言:javascript
复制
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'))

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

这是一个我不允许改变的特殊领域吗?

编辑:这里是经过修正的代码,可以工作。谢谢丹尼尔!

代码语言:javascript
复制
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
                    rev.save()
                    messages.info(request, _('User with id %(id)s is no superuser anymore') % {'id': id})
                else:
                    rev.is_superuser = 1
                    rev.save()
                    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'))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-11 10:28:09

您似乎没有在任何地方调用rev.save(),因此不会将更改持久化到数据库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25783881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档