我试图在django中生成动态文件路径。我想创建这样的文件系统:
-- user_12
--- photo_1
--- photo_2
--- user_ 13
---- photo_1
我发现了一个相关的问题:Django Custom image upload field with dynamic path
在这里,他们说我们可以将upload_改为path并指向https://docs.djangoproject.com/en/stable/topics/files/doc。在文档中,有一个示例:
from django.db import models
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location='/media/photos')
class Car(models.Model):
...
photo = models.ImageField(storage=fs)
但是,这仍然不是动态的,我想给图像名称赋予汽车id,并且在汽车定义完成之前我不能分配id。那么,我如何创建一条有汽车ID的路径呢??
您可以在
upload_to
参数中使用callable,而不是使用自定义存储。请参见docs,并注意其中的警告,即调用函数时可能尚未设置主键(因为在将对象保存到数据库之前可能会处理上载),因此可能无法使用ID
。你可以考虑在模型上使用另一个字段,比如slug。E、 克:然后:
您可以使用lambda函数,如下所示,请注意,如果实例是新的,则它将没有实例id,因此请使用其他函数:
https://docs.djangoproject.com/en/stable/ref/models/fields/#django.db.models.FileField.upload_to
文档中有一个警告,但它不应该影响您,因为我们是在
User
ID之后,而不是Car
ID之后相关问题 更多 >
编程相关推荐