【发布时间】:2014-11-16 18:09:05
【问题描述】:
在寻找扩展用户的最佳方式后,我按照此处描述的方式(https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model)。现在我正在寻找一种方法让用户从用户(例如名字、姓氏和电子邮件)和扩展的新类中编辑他们的一些字段。如果这可以在同一个屏幕上完成会很好,但我不确定这是否可能(我不想让非超级用户可以编辑权限)。
所以,我首先在管理员中尝试了这段代码,但它不起作用:
#admin.py
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class MyUserAdmin(UserAdmin):
def get_fieldsets(self, request, obj=None):
if request.user.is_superuser:
fieldsets = super(MyUserAdmin, self).get_fieldsets(request, obj)
else:
fieldsets = (
(None, {
'fields': ('username', 'first_name', 'last_name', 'email', 'password', 'last_login', 'date_joined',)
}),)
return fieldsets
# If not superuser, do not show some fields
def get_readonly_fields(self, request, obj=None):
ro_fields = super(MyUserAdmin, self).get_readonly_fields(request, obj)
if not request.user.is_superuser:
ro_fields = list(ro_fields) + ['username', 'last_login', 'date_joined',]
return ro_fields
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
这是我的模型的一部分:
class Investigator(models.Model):
user = models.OneToOneField(User, verbose_name=_('User'))
force_password_change = models.BooleanField(_('Force password change'), default=True)
...
我没有收到任何错误,但没有保存更改。我必须做什么才能让用户编辑某些特定字段?
【问题讨论】:
-
我不会遵循开发文档,1.6 或 1.7 就足够了
-
您的扩展型号名称是什么?你在扩展 django
User模型吗? -
Doniyor,1.7 中的文档也这么说:docs.djangoproject.com/en/1.7/topics/auth/customizing/…
-
哈桑,是的。我编辑了我的问题并添加了我的模型。
标签: django django-admin