gpt4 book ai didi

python-3.x - 如何创建一个 upload_to 文件夹,该文件夹名为属于同时创建的模型的字段?

转载 作者:行者123 更新时间:2023-12-02 19:00:58 24 4
gpt4 key购买 nike

上下文:我正在使用 Django 3.1.4 构建一个汽车经销商应用程序,并尝试实现一项功能,每次创建新广告时,都会创建一个新文件夹(通过/media/中的 upload_to 方法)将仅包含新创建的广告的照片。

我已经使用日期格式(见下文)来完成此工作,但我需要将这个新文件夹命名为属于模型的字段之一(请参阅第二个代码片段)。

photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d', blank=True)

例如,每个新创建的广告都会使用标题字段..

class Vehicles(models.Model):
CONDITION_CHOICES = [("Brand New","Brand New"),("Used", "Used")]
FUEL_CHOICES = [("Petrol","Petrol"),("Diesel", "Diesel"),("Electric", "Electric"),("Hybrid", "Hybrid")]
TRANSMISSION_CHOICES = [("Automatic","Automatic"),("Manual", "Manual")]
title = models.CharField(max_length=200, default = "Ad Title & Folder Name")
def folder_name(self, title):
return self.title
make = models.CharField(max_length=100)

理想情况下,媒体文件夹看起来像这样

/media/
Opel Astra VXR/
Mercedes E200/

我知道许多其他人也做了类似的事情,但我发现的所有示例都使用“用户”,而我需要使用模型字段(属于正在创建的模型)作为文件夹名称。

结束语:第二个代码片段中的功能只是我正在尝试的功能。

此外,这仍在开发中,因此在产品中我完全打算将所有媒体直接定向到 S3 存储桶。

最佳答案

documented

upload_to may also be a callable, such as a function. This will becalled to obtain the upload path, including the filename. Thiscallable must accept two arguments and return a Unix-style path (withforward slashes) to be passed along to the storage system. The twoarguments are:

  • 实例(定义 FileField 的模型实例。)
  • 文件名(最初指定给文件的文件名)

For example:

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)

关于python-3.x - 如何创建一个 upload_to 文件夹,该文件夹名为属于同时创建的模型的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65588269/

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