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 是应存储所有图像文件的预创建文件夹)我我在 Django 中很新。需要紧急帮助。

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
    )

模型.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关键字参数中指定可调用对象:请参阅此处的 FileField 文档

因此,创建一个您将指向的函数upload_to,它可以根据需要生成所有子目录。

于 2012-08-15T16:26:07.660 回答