如何解决在我的 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 举报,一经查实,本站将立刻删除。