2017-12-14 1 views
0

, 애플 리케이션 is_admin 및 그룹에 속성을 사용하여 내 사용자 클래스 User 클래스에 대해 어떻게해야할지 모르겠다. 이것은 내가 시도한 것이다.장고 : 클래스에 다른 속성하여 모델 클래스에 새로운 속성을 추가 나는 새로운 속성을 부여하기 위해 노력하고있어

내 models.py에 나는 assign_apps이라는 메소드를 가진 User 클래스가있다. 나는 is_admin 및 그룹에 속성

나 '를 get_user_apps 가져온 기능을 사용하여, 사용자 클래스에 애플 리케이션 (User.apps를) 새로운 속성을 추가하는 방법을 사용하려고하고있어 m 어떻게 든 User.assign_apps()를 User.appsUser.is_admin으로 계산되도록

이 작업을 수행 할 수있는 더 좋은 방법이 있나요 호출해야하기 때문에이 작동하지 않습니다 확신 User.group?

from .helpers import get_user_apps 

class User(): 
    is_admin = models.BooleanField(default=False) 
    group = models.ForeignKey(Brand, null=True, blank=True) 

    def assign_apps(self): 
     self.apps = get_user_apps(self.group, self.is_admin) 

답변

1

함수에 property 데코레이터를 사용할 수 있습니다. apps 방법에서

from .helpers import get_user_apps 

class User(): 
    is_admin = models.BooleanField(default=False) 
    group = models.ForeignKey(Brand, null=True, blank=True) 

    @property 
    def apps(self): 
     return get_user_apps(self.group, self.is_admin) 

당신은 이제까지 예를 들어 요구 등 self.groupself.is_admin을 참조한다 그렇게 할 수있는

그런 다음 사용에 속성으로 나타납니다

user = User() 
user.apps 

이렇게하면 항상 존재할 속성을 설정하기 위해 assign_apps을 사용할 필요가 없습니다. 당신이 user.apps을 (이 속성이 아닌 함수 호출 주) 사용할 때 get_user_apps(self.group, self.is_admin)

+0

에 대한 결과를 얻을 것이다 나는 방법? @property 데프 assign_apps (자체)에 * 반환 *를 사용해야합니까 : self.apps = get_user_apps (self.group, self.is_admin) return self.apps – NewToJS

+0

어떤 일이 발생했는지 더 잘 반영하도록 내 대답을 업데이트했습니다. 위의 제안과 함께'assign_apps' 메소드가 필요 없습니다. 도움이 되었기를 바랍니다. –

관련 문제