我知道这可能是一个愚蠢的问题,但我还没有找到解决方案。
我有一个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,不会改变。
提前致谢!
答案 0 :(得分:5)
实例函数(大多数函数是实例函数)有一个特殊参数,始终是第一个名为self
的参数。它是对您调用该函数的对象的引用。例如,如果您拨打some_instance.foo()
,则会调用foo
,self
为some_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