【django】models报错Manager isn’t accessible via XXX instances 的注意事项
问题描述:
某个模型与自身自联结,在model.py中,需要调用自己,此时必须使用model本身的对象名称,而不能使用’self’否则会报错。
class Project(models.Model):
"""
项目模型
"""
...
parent = models.ForeignKey('self', verbose_name="主合同", on_delete=models.CASCADE, null=True, blank=True, default=None)
class Meta:
verbose_name = "项目"
verbose_name_plural = "项目"
@property
def total(self):
"""
合同总价,项目本身的金额 加上 所有补充协议的金额
:return:
"""
total = self.contract_value
child = Project.objects.filter(parent=self.id) #注意这里使用的是Project.objects,不能使用self.objects
if child:
for p in child:
total += p.contract_value
return total