【问题标题】:Why i get 'NoneType' object has no attribute 'days_count' this error in my code为什么我的代码中出现“NoneType”对象没有属性“days_count”这个错误
【发布时间】:2021-04-10 14:11:25
【问题描述】:

我想要多个 days_count * room_service 但在多个之后我看到这个输出不合适。请查看 Room_Cost 为 800 天的图片,000 是什么解决方案,请帮助我..

class PatientDischarge(models.Model):
assign_doctor = models.ForeignKey(Doctor, on_delete=models.CASCADE, null=True)
appointment = models.ForeignKey(Appointment, on_delete=models.CASCADE)
release_date = models.DateField(auto_now_add=False, null=True)
medicine_cost = models.IntegerField(null=True, blank=True)
other_charge = models.IntegerField(null=True, blank=True)

def __str__(self):
    return self.appointment.patient.name if all([self.appointment, self.appointment.patient, self.appointment.patient.name]) else 0

def days_count(self):
    return self.release_date - self.appointment.entry_date if all([self.appointment, self.appointment.entry_date]) else 0

def room_bill(self):
    return self.days_count() * self.appointment.room_service if all([self.appointment, self.appointment.room_service])  else 0

【问题讨论】:

  • 能否粘贴完整的错误日志?
  • 这个错误意味着PatientDischarge对象是None,你不能在NoneType对象上调用PatientDischarge方法days_count()。您可以从回溯中看到失败的地方。可能在视图中的某个地方。

标签: python django nonetype traceback


【解决方案1】:

当您从另一天减去一天时,您会得到 timedelta,但您需要天数。修改你的天数

def days_count(self):
    return (self.release_date - self.appointment.entry_date).days if all([self.appointment, self.appointment.entry_date]) else 0

【讨论】:

    最近更新 更多