ModelBackend Django в _get_permissions собирает список строк с content_type__app_label
и разрешением codename
, но в модели разрешений по умолчанию эта строка может быть не уникальной (в модели разрешений unique_together = (('content_type', 'codename'),)
). Как разрешать конфликты, когда в модуле две модели имеют одинаковое имя разрешения.
Django 2.1
def check_user_perms_by_ct(user, perm_name, ct):
"""
Verifies user permissions based on permission code name and content type.
:param user: User object.
:param perm_name: str.
:param ct: ContentType object.
:return: Boolean.
"""
return user.has_perm(f'{ct.app_label}.{perm_name}')