Я новичок в Django. Я работаю над сайтом, который будет содержать пользователей только в качестве пользователей. Я администратор. Мой план - зарегистрировать пользователя и дать ему имя пользователя и пароль для входа в систему; Я хочу, чтобы он только, чтобы иметь возможность редактировать свой профиль, чтобы добавить дополнительную информацию, а не изменять существующие атрибуты. Как я могу это сделать?Как пользователи пользователей редактируют свои профили в администраторе Django?
ответ
Самый простой способ, вероятно, состоит в создании соответствующего 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)
(я использую этот код на живом сайте, и он работает создать)