我有一个名为“审阅者”的表,它是普通的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'))如果我选择一个用户并单击调用此函数的按钮,它会显示“用户不再具有id .不再是超级用户”或“用户具有id .现在是超级用户”,因此该函数识别is_superuser字段并可以读取其中的内容。但是,超级用户状态保持不变。
这是一个我不允许改变的特殊领域吗?
编辑:这里是经过修正的代码,可以工作。谢谢丹尼尔!
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'))发布于 2014-09-11 10:28:09
您似乎没有在任何地方调用rev.save(),因此不会将更改持久化到数据库。
https://stackoverflow.com/questions/25783881
复制相似问题