问题描述
我想下载患者的 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'>