员工用户如何在Django管理员中编辑他们的个人资料?

时间:2012-02-27 07:32:45

标签: django django-admin django-profiles

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

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是创建一个合适的ModelForm和一个相应的视图,它检查用户想要更新的实例是自己的实例。

我想直接在管理员后端集成它,你也可以这样做。最djangoish方式可能是为ModelAdmin创建一个自己的User类,其中有正确的方法被覆盖(参见开始here的方法)。我认为你应该首先覆盖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)

(我在实际网站上使用此代码并且可以创建)