2012-02-27 4 views
1

Я новичок в Django. Я работаю над сайтом, который будет содержать пользователей только в качестве пользователей. Я администратор. Мой план - зарегистрировать пользователя и дать ему имя пользователя и пароль для входа в систему; Я хочу, чтобы он только, чтобы иметь возможность редактировать свой профиль, чтобы добавить дополнительную информацию, а не изменять существующие атрибуты. Как я могу это сделать?Как пользователи пользователей редактируют свои профили в администраторе Django?

ответ

0

Самый простой способ, вероятно, состоит в создании соответствующего ModelForm и соответствующего представления, которое проверяет, что экземпляр, который пользователь хочет обновить, является собственным экземпляром.

Я хочу интегрировать это непосредственно в бэкэнд администратора, вы также можете это сделать. Самый djangoish способ мог бы создать собственный класс ModelAdmin для User, который имеет правильные методы, переопределенные (см. Методы, начинающиеся с here). Я думаю, вы должны начать с переопределения has_change_permission, где вы можете проверить, является ли объект, который пользователь пытается редактировать, является его собственным и возвращает False в противном случае.

Для замены стандартного пользователя ModelAdmin вам нужно сделать немного fiddeling в 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) 

(я использую этот код на живом сайте, и он работает создать)