Как штатные пользователи редактируют свои профили в админке Django? - PullRequest
1 голос
/ 27 февраля 2012

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

1 Ответ

0 голосов
/ 27 февраля 2012

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

Если вы хотите интегрировать это непосредственно в администраторебэкэнд, вы также можете сделать это.Наиболее вероятным способом было бы создать собственный класс 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)

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

...