2017-12-14 4 views
0

두 속성을 내 사용자 클래스에 할당하려고합니다. 첫 번째로 지정된 속성은 두 번째 속성을 할당하는 데 사용됩니다. 이 올바른지? 난 당신이 원하는 이유를 나는 아직도 이해하지 못하는 일부 값 또는 문자열을 반환하는 방법을 작성하는 경우 ...Django : @property를 사용하여 모델에서 속성을 설정하는 방법

class User(n): 

    group = models.ForeignKey(Brand, null=True, blank=True) 
    is_admin = models.BooleanField(default=True) 

    # assign the apps property (User.apps) 
    @property 
    def assign_apps(self): 
     self.apps = get_user_apps(self.group, self.is_admin) 

    # with User.apps, assign the apps_meta property (User.apps_meta) 
    @property 
    def assign_apps_meta(self): 
     self.apps_meta = get_user_apps_meta(self.apps) 
+0

아,이 코드는 전혀 이해가되지 않습니다. '@ property'를 사용하여 다른 메소드의 값을 할당하는 이유는 무엇입니까? 어떻게 부르죠? 너 뭐하려고? –

+0

기본적으로 self.apps (User.apps)를 할당하고 self.apps를 사용하여 self.apps_meta (User.apps_meta)를 할당하려고합니다. – NewToJS

+0

그렇지만 왜 그 중 하나를 수행 할 속성을 사용 하시겠습니까? –

답변

-1

다음

@property decorator 
class Person(models.Model): 
    name = models.CharField(max_length=255) 
    birth_date = models.DateField() 

    @property 
    def age(self): 
     return ...... 
1

를 사용해야 @property 장식을 사용하고 있습니다 여기서 속성을 사용하십시오. 이것은 정말로 그들이하는 것을위한 것이 아닙니다. 속성 데코레이터는 복잡한 속성에 대한 getter 및 setter를 만드는 데 사용됩니다. 그건 네가하는 일이 아니야.

이것은 간단한 방법에 대한 작업처럼 보입니다.

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

이제는 my_user.assign_apps()으로 전화 할 수 있습니다.