2017-12-14 11 views
0

そのクラス内の他のプロパティでモデルクラスに新しいプロパティを追加します。 UserクラスのUserクラスがありますが、これを行う方法がわかりません。これは私が試していることです:ジャンゴ:<em>is_admin</em>と<em>グループに</em>プロパティを使用して、私は私の<strong>ユーザー</strong>クラスに、新しいプロパティを割り当てることが<em>アプリの</em>をしようとしている

私のmodels.pyには、assign_appsのUserクラスがあります。私は私が「get_user_appsis_adminグループ性質に

をインポート機能を使って、アプリを(User.apps)、Userクラスに新しいプロパティを追加するには、そのメソッドを使用しようとしています

がUser.appsがUser.is_adminによって計算されようにこれを行うには良い方法はあります)私は何とかUser.assign_appsを(起動する必要がありますので、これは動作しませんかなり確信しています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を関数に使用できます。

user = User() 
user.apps 
:あなたがそのようにいままでのインスタンスに必要と self.groupを指していると self.is_adminなど

それは、その後の使用でプロパティとして表示されますすることができます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) 

これを行うと、常に存在するプロパティを設定するのに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'メソッドは必要ありません。私はそれがあなたに何が起こっているのかを助け、明確にすることを願っています。 –

関連する問題

 関連する問題