python新手。无论如何,我正在前往第一个项目。
请参阅我需要将多个文件上传到单个文件夹中,以便我想出这样的想法。
folder_name1
------myfiles1.jpg
------myfiled2.jpg
folder_name2
------mynewfiles.jpg
------mynewfiles1.jpg
我阅读了很多教程,这是我的models.py
def content_file_name(instance, filename):
return "uploads/{folder}/{file}".format(id=instance, folder=instance.albumname, file=filename)
class Album(models.Model):
albumname = models.CharField(max_length=100)
audiofile = models.FileField(upload_to=content_file_name)#documents/%Y/%m/%d
更新:这是我的view.py
def viewalbum(request):
if request.method == 'POST':
form = AlbumForm(request.POST, request.FILES)
if form.is_valid():
alubmnew = Album()
albumvalue = Album()
albumnew = Album(albumname = request.POST.get('albumname', None))
albumvalue = Album(audiofile = request.FILES['audiofile'])
#for albumvalue in request.FILES.getlist('audiofile'):
albumvalue.save()
albumnew.save()
return HttpResponseRedirect(reverse('google.views.viewalbum'))
else:
form = AlbumForm()
return render_to_response('audio/test.html',{'form': form}, context_instance=RequestContext(request))
我现在遇到的问题是..它没有创建albumname文件夹
而且在我的表格中,我无法一次上传多个文件。它实际上只需要上传一个文件......
答案 0 :(得分:1)
import os
def content_file_name(instance, filename):
upload_dir = os.path.join('uploads', instance.albumname)
if not os.path.exists(upload_dir):
os.makedirs(upload_dir)
return os.path.join(upload_dir, filename)
答案 1 :(得分:0)
尝试
import os
def content_file_name(instance, filename):
return os.path.join('uploads/%s' % instance.albumname, filename)
这会打包albumname文件夹吗?
答案 2 :(得分:0)
您需要像这样改变视图
albumvalue = Album()
albumvalue.albumname = request.POST.get('albumname', None)
albumvalue.audiofile = request.FILES['audiofile']
albumvalue.save()
我认为Manson Hanson讲述了编写模型的正确方法。