ファイルパスにファイルを保存するFile
モデルがあります。すべてのファイルはMEDIA_ROOT /ファイルに保存されますDjango:ダウンロードリンクを生成する
テンプレートでは、File
オブジェクトのダウンロードリンクを生成します。これを行う最善の方法は何ですか?私はdjangoで静的なファイル操作を使用する必要がありますか?
TIA!アイテムのビューで
UPD
File
モデル
class File(models.Model):
item = models.ForeignKey(Item)
file = models.FileField(upload_to = os.path.join(MEDIA_ROOT,'items'))
format = models.CharField(max_length = 255)
私は、次の手順を実行します
テンプレート へfiles = File.objects.filter(item_id = id)
とパスfiles
テンプレートで
私は例えばfiles.1.file.url
を使用して、まだsite.com/home/dizpers/...
のような悪いのURLを持ってUPD2
ソリューション
私の問題はfile
フィールドに、ファイルのモデルにありました。 upload_toパラメータでは、私は絶対パスを使用しますが、相対パスを使用する必要があります。
file = models.FileField(upload_to = 'items')
それは私のカスタムFileオブジェクトで動作しますか? djangoのFileオブジェクトではありません。 – dizpers
私はそれを試しました。動作しません。それでも 'home/dizpers/...'はディスク上のファイルへのパスです。 – dizpers
私はあなたの '/ home/dizpers/File'モデルはまだ標準の 'CharField'の代わりにTrue-blue' FileField'を利用していました。どちらもデータベースに同じ方法で保存されているため、実際にはそうしない理由はありません。 'FileField'はI/Oを扱うためのAPIを持っています。それでも、非常に基本的なリンクが必要な場合は、 '{{MEDIA_URL}} files/{{file_instance.path}}'を使うことができます。 –