各位朋友们好,现在我有两个文件夹pro1和pro2,
pro1下面有0.mp4,1.mp4,pro2下面有0.mp4和1.mp4,我用django的
video = models.FileField(upload_to = 'myvideo')
虽然可以将视频都上传到myvideo目录下面,但是myvideo下面的文件是:
0. mp4,0_2.mp4,1.mp4,1_2.mp4了,因为出现一样的名字,django自动做了转换。
我希望能够直接在myvideo下面上传得到pro1和pro2两个文件夹,然后两个文件夹中
分别包含各自的0.mp4,1.mp4。
希望各位朋友们能指点一下,非常感谢。
用jquery来动态修改。
upload_to配置
可以指定一个固定的路径,upload_to=' app-name'
可以指定一个strftime()格式化标签,Django会自动处理成指定格式的日期字符串,如:
file = models.FileField(upload_to="photos/%Y/%m/%d")
则文件存储的时候,会在photos文件夹下,再建立一个文件夹,以年月日命名。
可以指定一个函数,动态生成存放路径,方法如下,
class TrainingAttachment(models.Model):
def upload_to(instance, filename):
return '/'.join(['training', instance.subject.name, filename])
subject = models.ForeignKey(TrainingSubject)
file = models.FileField(upload_to=upload_to)
file_name = models.CharField(max_length=255, default='Attachment')
上面代码实现了附件存放到以TrainingSubject.name为目录的路径下。
可以在上传文件的views处理函数内指定upload_to存放地址
重载通用视图的form_valid方法,重新指定Model的FileField字段的upload_to路径:
def form_valid(self, form):
# 重新指定存放路径
Attachment._meta.get_field('file').upload_to = 'training/'+self.kwargs['subject_pk']
return super(AttachmentCreateView, self).form_valid(form)