ファイルをアップロードしたログインユーザーが自分のファイルをダウンロードできるビューを実装しようとしていますが、他のユーザーのファイルではなく自分のファイルのみをダウンロードできるため、ファイルの pk に基づいて id url を作成しません。ビューの結果として、test_result_file テーブルにクエリを実行し、特定のユーザーに対してフィルター処理を行います。モデルに関数を書くことで、やりたいことができると思います。
class test_result_file(models.Model):
user=models.ForeignKey(User)
system=models.ForeignKey(system)
test_id=models.ForeignKey(Detail)
path=models.CharField(max_length=300)
class Meta:
verbose_name="Test Result file"
verbose_name_plural="Test Result files"
def get_self(self):
path=self.path
wrapper = FileWrapper(open( path, "r" ))
response=HttpResponse(wrapper, content_type="text/plain")
response['Content-Disposition'] ='attachment; filename="results.txt"'
return response
ただし、テンプレートでは、次のように呼び出します。
<ul>
{% for at in attempts %}
<li>System Name: <em>"{{ at.system}}"</em>, download file: <a href="{{at.get_self}}">here</a> </li>
{% endfor %}</ul>
ダウンロードは提供されず、代わりにブラウザーは応答のすべてのパラメーターを使用して URL を開こうとして失敗します。私は何かを失っていますか?これはその機能で実現可能ですか?