Django вызывает метод Модели внутри другого метода той же Модели (в models.py)?

Я хочу вызвать метод модели внутри другого метода модели в models.py, но получаю ошибку AttributeError: module 'my_website.models' has no attribute 'my_model_method'

Вот моя модель:

class SaleCode(models.Model):
    #my fields and methods...

    #the method I want to call
    def generate_token(self, apply=True, length=5):
        # stuff
        return {
            "token": token,
            "self-applyed": apply
        }

    #save() method override
    def save(self, *args, **kwargs):
        if not self.pk:
            #self.code is one of my fields
            self.code = self.generate_token()["token"] #the line that generates the error
        super(SaleCode, self).save(*args, **kwargs)

Что я пробовал:

  • Я пытался разместить @classmethod @staticmethod) над объявлением generate_token(...) и затем вызвать его как SaleCode.generate_token():
@classmethod
def generate_token(self, apply=True, length=5):
    ...

self.code = SaleCode.generate_token()["token"] #the line that generates the error

  • Я написал функцию вне метода и затем вызвал ее как обычную функцию (это сработало, но, похоже, нет "четкого" способа сделать это)
  • .

Я действительно не знаю почему, но...

Я только что перезапустил сервер и это сработало... действительно странно, но я знаю, что это работает.

Вернуться на верх