2016-11-01 13 views
0

アップロードされたpdfファイルのページ数をカウントするために 'count'という名前のボタンを作成します。しかし、TypeError無効なファイルがあります:djangoファイルフィールドのオープンオブジェクトタイプエラー

このエラーに対処するためにコードを改善するにはどうすればよいですか?

PS。私は、Djangoの1.10を使用してコーディングでは初心者だし、ちょうど私の人生のeasilerを作るためにいくつかの小さなツールを作りたい:)

事前に感謝

マイモデル

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) 

答えて

0

ファイルフィールド値を直接openに渡すことはできません。しかし、the documentationが示すように、そのオブジェクト自体がopen方法がありますので、クラスでもread__iter__を定義する方法の

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

を、あなたは実際にフィールドを直接渡すことができるかもしれない:

pdf = PdfFileReader(self.file) 
関連する問題