微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在我的 Django 代码中列出超出范围的错误当我去下载一个pdf文件时

如何解决在我的 Django 代码中列出超出范围的错误当我去下载一个pdf文件时

我想下载患者的 pdf 文件,但是当我单击下载按钮时,出现了此错误。请任何人都可以帮助我解决错误..

views.py

def download_pdf_view(request,pk):
 dischargeDetails = Patientdischarge.objects.all().filter(admitted=pk).order_by('-id')[:1]

 dict = {
    'assign_doctor': dischargeDetails[0].assign_doctor,'admitted': dischargeDetails[0].admitted.patient_name,'phone': dischargeDetails[0].admitted.phone,'address': dischargeDetails[0].admitted.address,'symptoms': dischargeDetails[0].admitted.symptoms,'release_date': dischargeDetails[0].release_date,'medicine_cost': dischargeDetails[0].medicine_cost,'other_charge': dischargeDetails[0].other_charge,'days_count': dischargeDetails[0].days_count,'room_bill':dischargeDetails[0].room_bill,'total_bill': dischargeDetails[0].total_bill,}
return render_to_pdf('hospital/pdf_template.html',dict)

models.py:

class Patientdischarge(models.Model):
    assign_doctor = models.ForeignKey(Doctor,on_delete=models.CASCADE)
    admitted = models.ForeignKey(Admitted,on_delete=models.CASCADE)
    release_date = models.DateField(auto_Now_add=False)
    medicine_cost = models.IntegerField(null=True)
    other_charge = models.IntegerField()

    def __str__(self):
        return self.admitted.patient_name if all([self.admitted,self.admitted.patient_name]) else 0

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

    

解决方法

没有完整的堆栈跟踪很难理解问题。

但是,看起来 dischargeDetails 是空的,当您尝试使用 dischargeDetails[0] 访问时,它会引发错误 IndexError: list index out of range。检查这行代码 PatientDischarge.objects.all().filter(admitted=pk).order_by('-id')[:1] 是否真的返回了什么

一个简单的python示例来解释它:

my_list = []
print(my_list[0])

Traceback (most recent call last):
  File "<input>",line 1,in <module>
IndexError: list index out of range

另外,请不要使用类型名称调用您自己的变量,例如为您的 dict 变量使用另一个名称,因为它是一个 python 类型

a = dict
print(type(dict))
<class 'type'>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。