2017-11-06 8 views
0

モデルに基づいてpdfをアップロードするには、ファイルフィールドを使用してDjangoフォームを作成しようとしています。FileField Djangoでアップロードされたファイルへのアクセス

#models.py 
class ProductionRequest(models.Model): 
    ... 
    contract_file = models.FileField('Contract file (PDF)', upload_to='contracts/') 
    ... 

私は

このコードでファイルをアップロードして、自分のオブジェクトに保存しますが、私は私のテンプレートでファイルを表示しようとすることができます
{{ prod_req.contract_file }} 

それは私だけのファイルへのパスを示して "contracts/file_uploaded.pdf"ファイルをダウンロードする(または新しいタブで開く)にはどうすればいいですか?

プラス:現在::私はこのリンク

契約ファイル(PDF)で、Djangoの管理からファイルを開こうとすると契約/ file_uploaded.pdf

私は私のファイルを表示しません、私は私のファイルにアクセスするにはどうすればよい

Page not found (404) Request URL: http://127.0.0.1:8000/admin/appname/productionrequest/1/change/contracts/file_uploaded.pdf/change/

:私はこれを得ましたか。

+0

https://stackoverflow.com/questions/9462999/how-to-download-a-filefield-file-in-django-view –

答えて

0

これはPythonファイルと同じように機能します。したがって、ファイルオブジェクトを参照するだけの方法です。

テキストを取得するには、f.read()を使用する必要があります。だから、あなたのテンプレートでは、代わりに

{{ prod_req.contract_file }} 

使用

{{ prod_req.contract_file.read }} 

のBUT、readを呼び出すと、ファイルの末尾にカーソルを移動していることに注意してください。初めてファイルにreadを呼び出すと、すべてのテキストが返されます。 2回目は何も返しません。これは、テキストが2度必要な場合にのみ問題になりますが、その場合はテキストをコンテキストオブジェクトに直接格納してください。

不明な点がある場合は教えてください。

+0

私は私のファイルを入手できますありがとう! – dxtr69

関連する問題