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
- Я написал функцию вне метода и затем вызвал ее как обычную функцию (это сработало, но, похоже, нет "четкого" способа сделать это) .
Я действительно не знаю почему, но...
Я только что перезапустил сервер и это сработало... действительно странно, но я знаю, что это работает.