В django У меня есть суперпользователь и группа редакторов контента.Показать другую модель admin list_display и поля, установленные для разных групп пользователей
Когда я редактирую модель как суперпользователя, я хочу иметь возможность редактировать все поля. И если кто-то вошел в систему как редактор, я хочу разрешить ему редактировать только определенные поля.
Я сделал это с get_form
способом:
class VideoAdmin(admin.ModelAdmin):
editor_fields = ('description','description_rewrited')
def get_form(self, request, obj=None, **kwargs):
if not hasattr(request.user, 'perms_list'):
request.user.perms_list = request.user.groups.values_list('name',flat=True)
if 'video_description_rewriter' in request.user.perms_list:
print('rewrite fields to normal')
self.fields = self.normaluser_fields
return super(VideoAdmin, self).get_form(request, obj, **kwargs)
Это работает для меня. Но когда я открываю видео для редактирования в качестве обычного редактора, он изменяет поля суперпользователя, установленные для полей редакторов.
- Открытая модель админ как суперпользователь - http://joxi.ru/zAN5wWMIVjz429
- Открытая модель администратора в качестве редактора - http://joxi.ru/p27LJPZiDNgeA7
- Теперь суперпользователь то же поле, установленных в качестве редактора - http://joxi.ru/L21jko5TW0ydAX
Я предполагаю, что есть какое-то кэширования шаблонов?