12

データベースに保存されているテキスト ファイルを django で開くときに問題が発生しました。モデルの FileField を介してアクセスしたい...モデルは次のようになります

   class MyModel(models.Model):
      saved_file = FileField()

管理インターフェイス経由でテスト ファイルをアップロードすると、問題なく動作します。私の見解では、このファイルにアクセスしたいと考えています。標準の python open() で開くと、問題なく動作します...

 f = open(path, 'r')
 a = f.readlines()
 return render_to_response('base.html', {'content': a}, context_instance=RequestContext(request))

これにより、ファイルの行が表示されます... https://docs.djangoproject.com/en/dev/ref/models/fields/#filefieldによると、モデルから FileField が呼び出されたときに FieldFile プロキシを取得するため、

 f = MyModel.objects.all().get(id=0).saved_file

FieldFile を f に格納する必要があります。さらに、ドキュメントには、FieldFile で .open(mode='rb') をキャストしてモデルからファイルを開くと記載されているため、

file = f.open(mode='rb') 

ドキュメントに記載されているように、 python .open() のように動作するはずです。だから私がする行を取得するには

file.readlines()

行のリストを返す必要があります。.readlines() 属性が存在しないというエラーが表示されます。ファイルを表示する必要はありません。これは、ファイルを開くことが機能するかどうかをテストするための単なる方法ですが、ビジネス ロジックでさらに使用するには、ビューの変数にファイルの内容が必要です。FileField モデルからファイルの内容を取得する方法を提案できる人はいますか?

4

2 に答える 2