如何使用动态设置子目录的Django模型中设置Image Field
我需要将照片上传到特定目录。
我有以下模型代码。
@reversion.register()
class Student(BaseModel):
uuid = models.UUIDField(default=uuid.uuid4, verbose_name=_("Unique Identifier"), unique=True)
user = models.OneToOneField(User, on_delete=models.PROTECT, db_index=True, verbose_name=_("User"))
photo = models.ImageField(upload_to="student/", null=True, blank=True, verbose_name=_("Photo"))
std_status = models.IntegerField(choices=STD_STATUS, default=1, verbose_name=_("Stu Sta"))
std_no = models.AutoField(primary_key=True, verbose_name=_("Stu Num"))
name = models.CharField(max_length=100, db_index=True, verbose_name=_("Name"))
surname = models.CharField(max_length=100, db_index=True, verbose_name=_("Surname"))
对于照片线。它将照片上传到学生/目录。但是我需要拥有带有用户名和日期的子目录。喜欢“ student/jenifer_argon/2019223/2022/07/01” 我可以设置“ student/” 目录,但是用户名和std_no和日期应动态设置。 student/user/std_no/date 用户和std_no应该来自创建运行时的模型。 我该怎么做?
就像;一切都将处于相同的形式。但是,将首先设置STD_NO和用户,而不是用于设置上传的DIDETORY定义,并将图像上传到该目录。
I need to upload photos to specific directories.
I have below model code.
@reversion.register()
class Student(BaseModel):
uuid = models.UUIDField(default=uuid.uuid4, verbose_name=_("Unique Identifier"), unique=True)
user = models.OneToOneField(User, on_delete=models.PROTECT, db_index=True, verbose_name=_("User"))
photo = models.ImageField(upload_to="student/", null=True, blank=True, verbose_name=_("Photo"))
std_status = models.IntegerField(choices=STD_STATUS, default=1, verbose_name=_("Stu Sta"))
std_no = models.AutoField(primary_key=True, verbose_name=_("Stu Num"))
name = models.CharField(max_length=100, db_index=True, verbose_name=_("Name"))
surname = models.CharField(max_length=100, db_index=True, verbose_name=_("Surname"))
For the photo line. It uploads photos to student/ directory. But i need to have subdirectories with User name and dates. Like "student/jenifer_argon/2019223/2022/07/01"
I can set "student/" directory but username and std_no and date should be dynamically set. student/user/std_no/date user and std_no should come from above model on creation runtime.
How can i do this?
It is like; everything will be on same form. But std_no and user will be set first than they will be used to set upload diretory definition and image will be uploaded to that directory.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一个函数可以传递给 upload_to 通过实例和文件名,您可以使用这些路径来构建路径
A function can be passed to
upload_to
that is passed the instance and filename, you can construct your path using these