Django:如何使用@property在模型中设置属性

时间:2017-12-14 12:30:33

标签: python django django-models

我正在尝试两个属性分配给我的用户类。第一个分配的属性将用于分配第二个属性。它是否正确?我正在使用@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)

2 个答案:

答案 0 :(得分:2)

我仍然不明白你为什么要在这里使用属性。这真的不是他们的目的。属性修饰器用于为复杂属性创建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()

答案 1 :(得分:-1)

如果您正在编写返回某些值或字符串的方法,那么您应该使用

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

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