У меня есть пара различных профилей. Я хочу связать разрешения с этими профилями. Я сделал так, как это:Django - разрешения и профили
class StudentProfile(UserProfile):
school = models.CharField(max_length=30)
class Meta:
permissions = (
("is_student","Can access student pages"),
)
Однако, когда я пытаюсь проверить, существует ли разрешение с помощью has_perm на этом профиле объекта, я получаю сообщение об ошибке «объект„StudentProfile“не имеет атрибута" has_perm»утра Я не должен проверять разрешения таким образом? Я читал документы, и именно так я и думал, что должен был сделать
Редактировать: После прочтения документов, похоже, что has_perm - это метод, принадлежащий Пользователям, а НЕ их профили. Однако, когда я пытаюсь показать разрешения:
print user.get_all_permissions()
Я получаю пустой набор. Разве я не должен видеть что-то вроде «appname.is_student»
Хорошо спасибо. Я попробую сделать это «profile.is_student» и посмотреть, работает ли это – JPC
. Он только присваивает разрешение, если я делаю это с помощью инструмента администрирования при редактировании отдельного пользователя. Когда пользователь регистрируется регулярно и профиль подключен, разрешение, определенное в метаклассе в профиле, не привязывается. print user.get_all_permissions() приводит к пустующему набору – JPC
@ JPC: вам нужно либо назначить пользователя правильной группе, имеющей это разрешение, либо предоставить пользователю правильное разрешение непосредственно при регистрации. Если у вас есть собственный код обработки формы, вы можете сделать это после создания пользовательского объекта: 'user.permissions.add ('profiles.is_student')' или 'user.groups.add ('Student')' if группа 'Student' имеет разрешение' profiles.is_student'. –