Вы можете переопределить changeform_view следующим образом в BookAdmin
def changeform_view(self, request, *args, **kwargs):
self.readonly_fields = list(self.readonly_fields)
usergroup = request.user.groups.filter(name__in=['author']).exists()
if not usergroup:
self.readonly_fields.append('price_upgrade')
return super(BookAdmin, self).changeform_view(request, *args, **kwargs)
ДРУГОЙ ВАРИАНТ: Обновлено Вы можете переопределить метод get_readonly_fields в вашем Admin
def get_readonly_fields(self, request, obj=None):
usergroup = request.user.groups.filter(name__in=['author']).exists()
if not usergroup:
# since readonly_fields is a tuple we need to append to tuple
self.readonly_fields = self.readonly_fields + ('price_upgrade',)
return self.readonly_fields
Проблема, по которой он переопределял значение, основанное на комментарии, заключается в том, что он работал на одном и том же порту (в одном и том же экземпляре), поэтому проект был запущен на двух разных портах, поэтому проблемы не было. Поскольку, когда вы обращаетесь к одному и тому же порту, у него будет одинаковое разрешение для обоих пользователей, поэтому нам нужно перезапустить сервер.
Это то, что я обнаружил, пожалуйста, обновите, если есть какая-либо информация о пропусках
@ Обновление Существует проблема с кэшированием, поэтому она переопределяет разрешение, нужно найти решение для него, проблема в том, что вы вошли в систему с другим пользователем, у которого нет группы авторов. а выход из системы и вход с пользователем, у которого есть авторская группа, не смогут редактировать этот флажок, поэтому существует проблема с кэшированием. Скоро обновлю его, как только я найду решение. Если я перезагружаю сервер, он работает нормально, но перезапуск сервера не является правильным решением.
Связанный ref
Итак, после прохождения проблемы выяснил решение
def get_readonly_fields(self, request, obj=None):
readOnlyFields = super(BookAdmin, self).get_readonly_fields(request, obj)
usergroup = request.user.groups.filter(name__icontains='author').exists()
if not usergroup:
readOnlyFields = readOnlyFields + ('price_upgrade',)
return readOnlyFields