Python Django:通过模型类中的其他属性向模型类添加新属性

Python Django:通过模型类中的其他属性向模型类添加新属性,python,django,django-models,Python,Django,Django Models,我正在尝试使用用户类的is_admin和group属性为我的用户类分配一个新属性apps,但我不确定如何执行此操作。。这就是我正在尝试的: 在my models.py中,我有一个用户类,其中有一个方法assign\u apps。我正在尝试使用该方法,通过使用导入的函数get_User_apps和is_admin和group properties,向用户类apps User.apps添加一个新属性 我很确定这不会起作用,因为我必须以某种方式调用User.assign\u应用程序 是否有更好的方法来

我正在尝试使用用户类的is_admin和group属性为我的用户类分配一个新属性apps,但我不确定如何执行此操作。。这就是我正在尝试的:

在my models.py中,我有一个用户类,其中有一个方法assign\u apps。我正在尝试使用该方法,通过使用导入的函数get_User_apps和is_admin和group properties,向用户类apps User.apps添加一个新属性

我很确定这不会起作用,因为我必须以某种方式调用User.assign\u应用程序

是否有更好的方法来执行此操作,以便User.apps由User.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)

    @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_appsself.group、self.is_admin

方法中是否必须使用return?:@property def assign_appsself:self.apps=get_user_appsself.group,self.is_admin return self.appsI已更新我的答案,以更好地反映发生的情况。上面我的建议没有必要使用assign_apps方法。我希望这有助于澄清发生在你身上的事情。
user = User()
user.apps