2012-05-01 5 views
0
class Task(models.Model): 

    class Meta: 
     permissions = (
      ("view_task", "Can see available tasks"), 
      ("change_task_status", "Can change the status of tasks"), 
      ("close_task", "Can remove a task by setting its status as closed"), 
     ) 
user.has_perm('app.view_task') 

есть ли способ, чтобы проверить разрешение, если у меня есть contenttype.codename неизвестного (не жёстко), т.е. взято из базы данных динамически, как нижепроверки разрешения динамически

permission = Permission.objects.get(id=item.permission_id) 
contenttype = ContentType.objects.get(id=permission.content_type_id)    
user.has_perm(appname.contenttype.codename) 

но всегда возвращает ложные

ответ

0

Попробуйте

user.has_perm(u'%s.%s' % (contenttype.app_label, permission.codename)) 

Кроме того, использование

contenttype = ContentType.objects.get_for_model(Permission) 
+0

спасибо вам большое, это сработало :) – sumit

Смежные вопросы