Самым простым способом, вероятно, будет создание соответствующей 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)
(я использую этот код на живом сайте, и он работает создать)