You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django同一Model内部调用自定义方法报AttributeError的问题及解决

Django同模型类内部调用自定义方法报错问题解决

报错场景

在Django的models.py文件中,尝试在同一个Model类的方法内调用该类的另一个自定义方法,运行时抛出如下错误:
AttributeError: module 'my_website.models' has no attribute 'my_model_method'

错误复现代码

class SaleCode(models.Model):
    # 其他字段与方法省略

    # 需要被调用的自定义方法
    def generate_token(self, apply=True, length=5):
        # 业务逻辑省略
        return {
            "token": token,
            "self-applyed": apply
        }

    # 重写的save()方法
    def save(self, *args, **kwargs):
        if not self.pk:
            # self.code为模型字段
            self.code = self.generate_token()["token"] # 报错行
        super(SaleCode, self).save(*args, **kwargs)

已尝试的无效解决方案

  • 参考网络方案在generate_token()声明上方添加@classmethod(也测试过@staticmethod)装饰器,再通过SaleCode.generate_token()的方式调用,依然报错,修改后代码如下:
@classmethod
def generate_token(self, apply=True, length=5):
    # 业务逻辑省略

self.code = SaleCode.generate_token()["token"] # 仍报错
  • 将generate_token()方法写在模型类外部作为独立函数调用,可以正常运行,但该写法不符合面向对象的代码规范。

最终解决方案

直接重启Django开发服务器即可解决该问题,重启命令为:
python manage.py runserver


内容的提问来源于stack exchange,提问作者Enrico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:09:02