バイナリファイルをbase64でエンコードされた文字列としてモデルのTextField()に保存しています。私はこのようにやっています:
class Foo(models.Model):
_data = models.TextField(db_column='data', blank=True)
def set_data(self, data):
self._data = base64.encodestring(data)
def get_data(self):
return base64.decodestring(self._data)
data = property(get_data, set_data)
(このスニペットから)。
Django管理インターフェースから(できればモデルインスタンスの変更/編集ページから)これらのファイルを(デコード後に)ダウンロードするためのリンクを提供するにはどうすればよいですか?
他のモデルフィールドと同じように、デコードしてページに表示できますが、バイナリファイルであるため、表示されないか、ゴミになります。ダウンロードリンクを提供したいのですが。
Djangoファイルについてグーグルで検索できる情報のほとんどは、ユーザーのアップロードを取得していること、またはWebサーバーから静的(メディア)ファイルを直接提供したいことを前提としています。どちらもそうではありません。私のファイルは小さく、使用頻度は低く、管理目的でのみ使用されるため、データベースに直接保存したり、Djangoにファイルを提供させたりしても問題はありません。