7

どうすればのリンクを取得できFileFieldますか?urlフィールドを試しましたが、ファイルパスが表示されます。

In [7]: myobject.myfilefield.path
Out[7]: u'/home/xxxx/media/files/reference/1342188147.zip'

In [8]: myobject.myfilefield.url
Out[8]: u'/home/xxxx/media/files/reference/1342188147.zip'

私は得ることを期待していましたhttp://<mydomain>/media/files/reference/1342188147.zip

どうすればそれを取得できますか?文字列を手動で作成する必要がありますか?

編集

MEDIA_URLが設定されていませんが、それでも機能させることができません。

settings.py

MEDIA_ROOT = '/home/xxx/media/'
MEDIA_URL = 'http://xxx.com/media/'

models.py

class Archive(models.Model):

    #...
    file = models.FileField(upload_to="files")

シェルで

a = Archive()
a.file = "/some/path/to/file.txt"
a.save()

それから私はのために得るa.path

"/some/path/to/file.txt"

とのためにa.url

"http://xxx.com/media/some/path/to/file.txt"

プログラムでa.file = "/some/path/to/file.txt"実行すると、ファイルはにアップロードされませんMEDIA_ROOT。で定義されたディレクトリにファイルをアップロードするにはどうすればよいですか?upload_to私の場合はどうすればよい/home/xxx/media/file.txtですか?

4

2 に答える 2

-1

出力は設定ファイルに基づいています。開発および/または本番環境での静的ファイルの提供について理解するには、こちらをご覧ください。

Django 管理ファイル、静的ファイル、およびメディア ファイルの混乱

于 2012-07-13T16:00:03.607 に答える
-2

フィールドが次のように定義されていると思います。

picture = models.ImageField(upload_to="/home/xxx/media/files/reference")

つまり、フィールドの upload_path プロパティに絶対パスを定義した可能性はありますか?

次のようなものを試してください

from django.conf import settings
picture = models.ImageField(upload_to=settings.MEDIA_ROOT + "files/reference")
于 2012-07-13T16:01:00.903 に答える