我是 Django 的新手。我正在开发一个仅包含员工用户的网站。我是管理员。我的计划是注册一个用户并给他他的用户名和密码来登录;我希望他只能编辑他的个人资料以添加更多信息,而不是更改现有属性。我怎样才能做到这一点?
问问题
501 次
1 回答
-1
最简单的方法可能是创建一个适当的 ModelForm 和一个相应的视图,检查用户想要更新的实例是自己的实例。
我想直接将它集成到管理后端,你也可以这样做。最 djangoish 的方法可能是创建一个自己的ModelAdmin
类,该类User
覆盖了正确的方法(请参阅从这里开始的方法)。我认为你应该从重写开始,has_change_permission
在那里你可以检查用户尝试编辑的对象是否是他自己的,否则返回 False。
要替换标准的 User ModelAdmin,您需要在 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)
(我在一个实时网站上使用这个代码,它可以创建)
于 2012-02-27T08:03:58.010 回答