1

django で動的ファイル パスを生成しようとしています。こんなファイルシステムを作りたい

hierarchy:
 --user_12
  --channel_14
   --program 2
    --image1.jpg
    --image2.jpg
   --program 1
    --image1.jpg
    --image2.jpg
 --user_14
  --channel_13
   --program 1
    --image1.jpg
    --image2.jpg

ユーザーが画像をアップロードする場合、対応するプログラム フォルダーに画像がアップロードされます。プログラム フォルダーが作成されない場合は、自動的にフォルダーが作成され、画像が保存されます。

私の画像パスは次のようになります: media/images/john/johnchannel/birthday/img1.jpg (ここで、john=user,johnchannel=channel,birthday=program,images は、すべての画像ファイルが保存される事前に作成されたフォルダーです)ジャンゴで非常に新しいです。緊急の助けが必要です。

4

2 に答える 2

5

このようなものをお探しですか?

その他

def get_upload_path(instance, filename):
    """ creates unique-Path & filename for upload """
    ext = filename.split('.')[-1]
    filename = "%s%s.%s" % ('img', instance.pk, ext)

    return os.path.join(
        'images', instance.user.username, instance.channel, instance.something, filename
        #images/     john/                johnchannel/       birthday/          img1.jpg
    )

models.py

from misc import get_upload_path

class MyThing(models.Model):
    user = models.ForeignKey(User)
    channel = models.CharField(max_length=100) # johnchannel
    something = models.CharField(max_length=100) # birthday
    img = models.ImageField(upload_to=get_upload_path)
于 2012-08-15T16:25:43.930 に答える
1

Django モデルで ImageField を使用する場合、upload_toキーワード引数で callable を指定できます:ここの FileField ドキュメントを参照してください。

したがってupload_to、必要に応じてすべてのサブディレクトリを生成できる、ポイントする関数を作成します。

于 2012-08-15T16:26:07.660 に答える