如何在模板级别更改Django admin中的is_staff选项

时间:2012-05-13 08:52:44

标签: django django-models django-admin django-views

我必须将views.py文件中的“is_staff”选项更改为禁用Django-admin页面,但我无法弄清楚以下问题。 每当我试图写“user.is_staff”时,它听起来没有任何选择它(is_staff),而is_active存在。这是导入问题吗?

以下是我导入的内容:

from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.auth.models import User
from django.http import HttpResponseForbidden, HttpResponse
from django.shortcuts import get_object_or_404
from django.views.generic.list_detail import object_detail
from django.views.generic.simple import direct_to_template
from django.utils.translation import ugettext as _
from django.core.mail import send_mail
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

以下代码我在views.py中写道:

def user_change_status(request, id):
user = User.objects.get(pk=id)
    if user.is_staff:
       user.is_staff = False
    else:
       user.is_active = True
return HttpResponse('')

整个场景是我有一个模板,用他/她的is_staff选项显示所有用户的列表(True / False)。当超级用户选择任何用户is_staff选项时,我想要的是它变为更改并且页面将在同一页面上重定向。

编辑后: 在views.py中定义了两种方法:

def user_change_status(request, id):
user = User.objects.get(pk=id)
if user.is_active:
    user.is_staff = False
else:
    user.is_staff = True
user.save()
value2 = user.is_staff
return HttpResponse(value2)

另一个是`

def user_block(request, id):
user = User.objects.get(pk=id)
if user.is_active:
    user.is_active = False
else:
    user.is_active = True
user.save()
value1 = user.is_active
return HttpResponse('value1')    

我想更改is_staff值和is_active值。方法user_change_status不起作用,而user_block起作用。

2 个答案:

答案 0 :(得分:5)

Python是一种动态语言。特别是,它不是Java或C ++。通常,IDE在动态语言中自动完成功能非常糟糕。

任何IDE作为自动完成选项提供或不提供的内容都是完全错误的。有时它会把它弄好,有时则不会。有时候它会提供不属于对象成员的选项。

使用文档,而不是IDE。

答案 1 :(得分:1)

user_change_status删除了活跃用户的is_staff,但为非活动用户启用了is_staff,这是您想要做的吗?实际上,它不是关于切换is_staff值吗? 我问,因为user_block切换了is_active值。

如果是,您应该替换

if user.is_active:
    user.is_staff = False

if user.is_staff:
    user.is_staff = False