2017-12-14 2 views
0

Ich versuche zu zuweisen zwei Eigenschaften meines Benutzer Klasse. Die erste zugewiesene Eigenschaft wird beim Zuweisen der zweiten Eigenschaft verwendet. Ist das richtig? Ich bin mit dem @property Dekorateur ...Django: Wie eine Eigenschaft in einem Modell setzen mit @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

Argh, dieser Code macht überhaupt keinen Sinn. Warum würden Sie '@ property' verwenden, um einen Wert aus einer anderen Methode zuzuweisen? Wie würdest du es nennen? Was versuchst du zu machen? –

+0

Ich versuche im Grunde nur, self.apps (User.apps) zuzuordnen und dann self.apps zu verwenden, um self.apps_meta (User.apps_meta) zuzuweisen. – NewToJS

+0

Ja, aber warum möchten Sie eine Eigenschaft verwenden, um beides zu tun? –

Antwort

-1

wenn Sie Methode schreiben, welcher einen Wert oder String zurückgibt, dann sollten Sie

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

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

verwende ich immer noch nicht verstehen, warum Sie wollen Verwende Eigenschaften hier. Das ist wirklich nicht das, wofür sie sind. Der Property-Decorator dient zum Erstellen von Gettern und Settern für komplexe Attribute. das ist nicht das, was du überhaupt tust.

Dies scheint wie ein Job für eine einfache Methode.

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

und jetzt können Sie my_user.assign_apps() anrufen.

Verwandte Themen