2012-11-12 2 views
2

내가 사전에 3 명의 사용자 그룹 만 있다는 것을 알고있는 프로젝트가 있다고 가정합니다. GroupParent를 상속 받아 미리 정의한 다음이 그룹 선택 항목을 사용하여 UserProfile에 필드를 추가 할 수 있습니까?Django UserProfile 모델에서 그룹 사용 권한 상속

class GroupParent(??): 
    class Meta: 
     permissions = (
      ('do_something', 'Can do something'), 
      ('edit_task', 'Can edit task'), 
    ); 

class GroupAdmin(GroupParent): 
    class Meta: 
     // I want to inherit the permissions from the Mixin and add a few 
     // I know this would only overwrite... how do I do it? 
     permissions = (
      ('do_fancy_tasks', 'Can do fancy tasks'), 
     ) 

class GroupCoordinator(GroupParent): 
    class Meta: 
    // inherit from GroupParent and add my own 
     permissions = (
      ('open_file', 'Can open files'), 
     ) 

class GroupNormal(GroupParent): 
    class Meta: 
    // inherit from GroupParent and add my own 
     permissions = (
      ('open_file', 'Can open files'), 
      ('edit_file', 'Can edit files'), 
     ) 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    has_manager = models.BooleanField() 
    ... 
    ... 
    group = models.CharField(max_length=2, choices=GROUP_CHOICES) // how?? 

이도 합리적인 접근 방식인가, 아니면 응용 프로그램이 내장되면 그냥 그룹에게 + 권한을 포기하고 설정해야합니다 (또는 내가 짓고 있어요로) : 이것은 내가하고 싶은 것을 기본적으로 ?

또한 ... 장고의 기본 권한 기능보다 장고 보호자를 사용하면 어떤 이점이 있으며이 모델과 함께 사용하려면 무엇을 명심해야합니까? 감사!

답변

1

간단한 튜플 추가는 어떻습니까?

class GroupParent(object): 
    class Meta: 
     permissions = (
      ('do_something', 'Can do something'), 
      ('edit_task', 'Can edit task'), 
     ) 

class GroupAdmin(GroupParent): 
    class Meta: 
     permissions = GroupParent.Meta.permissions + (
      ('do_fancy_tasks', 'Can do fancy tasks'), 
     ) 

GroupParent가 mixin이기 때문에 괜찮습니다. GroupParent가 Django 모델 인 경우 GroupParent._meta.permissions을 사용해야합니다.