gpt4 book ai didi

Django - 如何将 ImageField 文件存储在不同的文件夹中?

转载 作者:行者123 更新时间:2023-12-05 05:41:57 36 4
gpt4 key购买 nike

我已经配置了 MEDIA_ROOTMEDIA_URL 并且工作正常。我的 MEDIA 文件存储在名为 /media/ 的目录中,现在我想将新上传的 文件存储到新目录(例如。< strong>/media2/) 而不会破坏以前的文件。

例如我有这样一个 Book 模型:

class Book(models.Model):
# name
# author
cover = models.ImageField()

现在假设我有 500 个 Book 模型对象,所以每个封面都有一个路径和 url,如下所示:

网址:http://example.com/media/books/thumb.jpg

路径:/home/myproj/media/books/thumb.jpg

现在,我想将我新创建的书籍的封面存储在另一个目录中,例如。 :

网址:http://example.com/media2/books/thumb.jpg

路径:/home/myproj/media2/books/thumb.jpg

没有打破之前的 500 本书!

我怎样才能做到这一点?! (Django 3.1.2)

最佳答案

将所有文件上传到一个目录很重要。从那里,您可以定义文件的 upload_to 属性:“此属性提供了一种设置上传目录和文件名的方法,可以通过两种方式设置。在这两种情况下,该值都被传递到 Storage.save() 方法。”

这里有几个例子来自 Django docs :

class MyModel(models.Model):
# file will be uploaded to MEDIA_ROOT/uploads
upload = models.FileField(upload_to='uploads/')
# or...
# file will be saved to MEDIA_ROOT/uploads/2015/01/30
upload = models.FileField(upload_to='uploads/%Y/%m/%d/')

或者创建一个函数传递给模型:

def user_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
return 'user_{0}/{1}'.format(instance.user.id, filename)

class MyModel(models.Model):
upload = models.FileField(upload_to=user_directory_path)

关于Django - 如何将 ImageField 文件存储在不同的文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72176220/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com