Я хочу добавить разрешение в таблице auth_permission
. Когда я вставляю другое разрешение вручную, мне также нужно вставить content_type_id
. Это относится к таблице content_type
. Я не знаю, что он делает. Я хочу удалить набор строк HTML, если у пользователя нет такого разрешения. В чем важность content_type_id
?
Таблица типов содержимого Django — разрешение авторизации
Ответы (1)
«content_type_id» — это имя поля, определенное Django.
Поле является отношением внешнего ключа к экземпляру ContentType.
Важность этого поля заключается в том, что оно обозначает объект, к которому применяется разрешение (из исходного кода django 1.7.11):
Разрешения устанавливаются глобально для каждого типа объекта, а не для конкретного экземпляра объекта. Можно сказать: «Мэри может изменить новости...
В приведенной выше цитате поле типа контента будет отношением внешнего ключа к «новой истории».
В вашем случае вы хотите иметь возможность контролировать, увидит ли кто-то фрагмент HTML. Вы можете создать пользовательскую модель для определения своего разрешения, например:
class MyPermObject(models.Model):
pass
А затем создайте указанное разрешение следующим образом:
content_type = ContentType.objects.get_for_model(MyPermObject)
permission = Permission.objects.create(codename='can_see_html', name='Can see my HTML', content_type=content_type)
См. документы django, чтобы узнать, как запросить разрешение пользователя: https://docs.djangoproject.com/en/1.9/topics/auth/default/#topic-authorization