当打开django文件字段的对象时出现TypeError

时间:2016-11-01 15:06:36

标签: python django upload filefield

我想制作一个名为' count'计算上传的pdf文件的页数。但是,有TypeError无效文件:

如何改进我的代码以解决此错误......?

PS。我是使用django 1.10进行编码的新手,只想制作一些小工具来制作我的生活方式:)

提前致谢

我的模特

from django.db import models
from PyPDF2 import PdfFileReader

class PdfFile(models.Model):
    file = models.FileField(upload_to='document/')
    num_of_pages = models.IntegerField(null=True)

    def page_count(self):
        pdf = PdfFileReader(open(self.file, 'rb'))
        self.num_of_pages = pdf.getNumPages()
        self.save()

我的观点

def count(request, pk):
    pdf = get_object_or_404(PdfFile, pk=pk)
    pdf.page_count()
    return redirect('img_preview', pk=pk)

1 个答案:

答案 0 :(得分:0)

您无法将文件字段值直接传递给open。但是,正如the documentation所示,该对象本身具有open方法:

pdf = PdfFileReader(self.file.open())

由于该类还定义了read__iter__,您实际上可以直接传递该字段:

pdf = PdfFileReader(self.file)