如何使用方法更改类属性?

时间:2018-05-17 13:31:58

标签: python django class django-models

我知道这可能是一个愚蠢的问题,但我还没有找到解决方案。

我有一个Django模型类,它有一些默认属性,我想通过调用一个函数来改变整个变量的值:

class Goal(models.Model):
    text = models.CharField(max_length=500)
    date = models.DateTimeField(auto_now=True)
    complete = False

    def set_complete_true():
        complete = True

但是在调用set_complete_true()后,完整变量仍为False,不会改变。

提前致谢!

2 个答案:

答案 0 :(得分:5)

实例函数(大多数函数实例函数)有一个特殊参数,始终是第一个名为self的参数。它是对您调用该函数的对象的引用。例如,如果您拨打some_instance.foo(),则会调用fooselfsome_instance

因此,您需要添加self参数,并将self.complete设置为True

class Goal(models.Model):
    text = models.CharField(max_length=500)
    date = models.DateTimeField(auto_now=True)
    complete = False

    def set_complete_true(self):
        self.complete = True

答案 1 :(得分:1)

我不懂Django课程,但我相信这值得一试:

class Goal(models.Model):
    text = models.CharField(max_length=500)
    date = models.DateTimeField(auto_now=True)
    complete = False

    def set_complete_true(self):
        self.complete = True

a = Goal()
a.set_complete_true()
print(a.complete) # should be true now