1

我是 Django 的新手。我正在开发一个仅包含员工用户的网站。我是管理员。我的计划是注册一个用户并给他他的用户名和密码来登录;我希望他只能编辑他的个人资料以添加更多信息,而不是更改现有属性。我怎样才能做到这一点?

4

1 回答 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 回答