is_staff=True
Django 管理インターフェースで、ユーザーがいくつかの Django モデルを使用できるようにする必要があります。各ユーザーにアクセスして、アクセス許可またはグループ アクセス許可をスタッフ ユーザーに割り当てたくありません。
ModelAdmin
またはクラスでどのメソッドをオーバーライドする必要がありますか、またはBaseModelAdmin
他の簡単な方法はありますか? 私はDjango 1.4バージョンを使用しています
is_staff=True
Django 管理インターフェースで、ユーザーがいくつかの Django モデルを使用できるようにする必要があります。各ユーザーにアクセスして、アクセス許可またはグループ アクセス許可をスタッフ ユーザーに割り当てたくありません。
ModelAdmin
またはクラスでどのメソッドをオーバーライドする必要がありますか、またはBaseModelAdmin
他の簡単な方法はありますか? 私はDjango 1.4バージョンを使用しています
このようなものが動作するはずです:
class StaffRequiredAdminMixin(object):
def check_perm(self, user_obj):
if not user_obj.is_active or user_obj.is_anonymous():
return False
if user_obj.is_superuser or user_obj.is_staff:
return True
return False
def has_add_permission(self, request):
return self.check_perm(request.user)
def has_change_permission(self, request, obj=None):
return self.check_perm(request.user)
def has_delete_permission(self, request, obj=None):
return self.check_perm(request.user)
すべての ModelAdmin がこのクラスを継承する必要があります。例えば:
class MyModelAdmin(StaffRequiredAdminMixin, admin.ModelAdmin):
pass
admin.site.register(MyModel, MyModelAdmin)
このコードはテストされていないことに注意してください。
staff_member_required デコレーター
staff_member_required(redirect_field_name='next', login_url='admin:login') [ソース]
このデコレーターは、承認が必要な管理ビューで使用されます。この関数で装飾されたビューは、次のように動作します。
ユーザーがログインしており、スタッフ メンバーであり (User.is_staff=True)、アクティブである (User.is_active=True) 場合は、通常どおりビューを実行します。
それ以外の場合、リクエストは login_url パラメータで指定された URL にリダイレクトされます。最初にリクエストされたパスは、redirect_field_name で指定されたクエリ文字列変数に格納されます。例: /admin/login/?next=/admin/polls/question/3/。
使用例:
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def my_view(request):
...