职员用户如何在Django admin中编辑他们的个人资料?
问题描述:
我是Django的新手。我正在开发一个仅包含用户作为员工用户的网站。我是管理员。我的计划是注册一个用户,并给他他的用户名和密码登录;我想他只有能够编辑他的个人资料添加更多的信息,而不是改变现有的属性。我怎样才能做到这一点?职员用户如何在Django admin中编辑他们的个人资料?
答
最简单的方法可能是创建一个适当的ModelForm和一个相应的视图,用于检查用户想要更新的实例是否是自己的实例。
我想直接在管理后台集成这个,你也可以这样做。最简单的方法可能是为User
创建一个自己的ModelAdmin
类,该类具有覆盖的正确方法(请参阅开始here的方法)。我认为你应该从重写has_change_permission
开始,你可以检查用户试图编辑的对象是否是他自己的,否则返回False。
要替换标准的用户的ModelAdmin你需要做一点点fiddeling在admin.py:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
# add the code here
# deregister the standard AdminModel and register the own one
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
(我使用的是活网站的代码和它的作品创造)