Django模型访问属性时出现self未定义错误,求技术帮助
解决Django模型中
self is not defined错误 错误原因
- 你定义的
create_from_document方法没有把实例/类参数作为第一个参数:Python里实例方法必须以self作为首个参数,类方法则用cls,否则无法访问类或实例的属性,这直接导致了self is not defined报错。 - 从方法逻辑来看,你是想通过传入的document创建并返回Receipt实例,这时候还没有实例存在,所以这个方法应该定义为类方法,而不是实例方法。
修正后的代码
class Receipt(models.Model): receipt_id = models.AutoField( primary_key=True, db_comment="" ) store_name = models.TextField( max_length=255, default="Unidentified", db_comment="" ) total_amt = models.DecimalField( max_digits=6, decimal_places=2, default=0.00, db_comment="" ) @classmethod def create_from_document(cls, document): if document is None: return False # 创建Receipt实例 receipt = cls() receipt.store_name = document.store_name receipt.total_amt = document.total_amt receipt.save() return receipt
关键修正点
- 添加
@classmethod装饰器,把方法标记为类方法,用cls作为第一个参数指代当前类 - 通过
cls()创建Receipt的实例,替代原来错误的self操作(原写法中没有实例,自然找不到self) - 对创建好的实例赋值属性、保存后返回实例
内容的提问来源于stack exchange,提问作者SeaSky
相关产品推荐
相关产品推荐

