我給編輯器,權限:django管理員權限 - 可以編輯用戶,但無法編輯他的權限 - 如何做到這一點?
權威性|用戶|可以添加/更改用戶 - ON
auth |權限|可以添加/更改權限 - 關
儘管如此,編輯時,他們可以改變他們的權限(並讓自己,他們不應該做的動作)。我從2年前發現了一張票:http://code.djangoproject.com/ticket/6519,它仍然以這種方式工作。
如何允許用戶編輯(電子郵件,密碼等)但阻止權限更改?
我給編輯器,權限:django管理員權限 - 可以編輯用戶,但無法編輯他的權限 - 如何做到這一點?
權威性|用戶|可以添加/更改用戶 - ON
auth |權限|可以添加/更改權限 - 關
儘管如此,編輯時,他們可以改變他們的權限(並讓自己,他們不應該做的動作)。我從2年前發現了一張票:http://code.djangoproject.com/ticket/6519,它仍然以這種方式工作。
如何允許用戶編輯(電子郵件,密碼等)但阻止權限更改?
你目前的做法恐怕不行。
如果您有權限添加用戶,你必須創建超級用戶,然後可以反過來,更改其他用戶的力量。
因此,如果您設法阻止編輯者更改權限,它將無濟於事,因爲他們仍然可以創建超級用戶。
是啊,似乎很合乎邏輯:/ – zalew 2009-12-01 21:34:19
下面的代碼可以覆蓋formset,這實質上限制了非超級用戶編輯權限的能力。他們仍然可以創建用戶,但他們無法修改權限。他們甚至可以很好地編輯用戶。
class UserAdmin(UserAdmin):
def change_view(self, request, object_id):
# we want to limit the ability of the normal user to edit permissions.
if request.user.is_superuser:
self.fieldsets = (
(None, {'fields': ('username', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
(_('Groups'), {'fields': ('groups',)}),
)
else:
self.fieldsets = (
(None, {'fields': ('username', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
#(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
#(_('Groups'), {'fields': ('groups',)}),
)
return super(UserAdmin, self).change_view(request, object_id,
)
看起來你最好的選擇是尋找泰伯爾並告訴他快點修復它。 – 2009-12-01 12:12:37