Как изменить атрибуты класса с помощью метода? - PullRequest
0 голосов
/ 17 мая 2018

Я знаю, что это, возможно, глупый вопрос, но я пока не нашел решения.

У меня есть класс модели 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 голосов
/ 17 мая 2018

Функция экземпляр (большинство функций являются функциями экземпляра) имеет специальный параметр, который всегда является первым, называемым 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(<b>self</b>):
        <b>self.</b>complete = True
0 голосов
/ 17 мая 2018

Я не знаю классов Джанго, но я думаю, что это стоит попробовать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...