我正在尝试使用 is_admin 和组<为我的用户类分配一个新属性 apps / em> User类的属性,但我不知道该怎么做..这就是我正在尝试的:
在我的models.py中,我有一个User类,其方法为 assign_apps 。我正在尝试使用该方法通过使用导入的函数 get_user_apps 和 is_admin将新属性添加到User类 apps (User.apps) 和组属性
我很确定这不起作用,因为我不得不调用User.assign_apps()
是否有更好的方法来执行此操作,以便 User.is_admin 和 User.group 计算 User.apps ?
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)
答案 0 :(得分:1)
您可以在函数上使用property
装饰器。
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)
然后,您可以在apps
方法中了解实例所需的内容,并参考self.group
和self.is_admin
等。
它将在使用中显示为属性:
user = User()
user.apps
通过这样做,您不需要使用assign_apps
来设置它将始终存在的属性。当您使用user.apps
时(注意它是属性而非函数调用),您将获得get_user_apps(self.group, self.is_admin)
的结果