在寻找扩展用户的最佳方式后,我按照此处描述的方式(https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model)。现在我正在寻找一种方法让用户从User(例如first_name,last_name和email)以及扩展的新类中编辑他们的一些字段。如果这可以在同一个屏幕上完成会很好,但我不确定这是否可行(我不想让非超级用户可以编辑权限)。
所以,我首先在admin中尝试了这段代码,但它不起作用:
#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)
...
我没有错误,但更改未保存。我必须做些什么才能让用户编辑某些特定字段?
答案 0 :(得分:0)
您需要为用户设置编辑用户模型的权限