2015-04-01 4 views
0

, что им пытаются сделать, это загрузить умножьте файлы сразу код является довольно старым и интересно, если кто-нибудь может помочь или есть лучший способ делать этоДжанго не mutiupload работает

вот мой код модель .py

class Document(models.Model): 
    docfile = models.FileField(upload_to=only_filename) 

    def __unicode__(self): 
     return self.docfile.name 

    @models.permalink 
    def get_absolute_url(self): 
     return ('upload-delete',) 

forms.py

class MyUploadForm(forms.Form): 
    docfile = MultiFileField(max_num=3, min_num=1, max_file_size=1024*1024*5) 

    def save(self, commit=True): 
     super(MyUploadForm, self).save(commit=commit) 

     for each in self.cleaned_data['docfile']: 
      att = Attachment(parent=self.instance, file=each) 
      att.save() 

     return self.instance 

и view.py

@login_required 
def list(request): 
    if request.method == 'POST': 
     form = MyUploadForm(request.POST, request.FILES) 
     if form.is_valid(): 
      newdoc = Document(docfile = request.FILES['docfile']) 
      newdoc.user = request.user 
      newdoc.save() 

      return HttpResponseRedirect(reverse('multiupload.views.list')) 
    else: 
     form = MyUploadForm() # A empty, unbound form 

    documents = Document.objects.all 

    return render_to_response(
     'sample/index.html', 
     {'documents': documents, 'form': form}, 
     context_instance=RequestContext(request) 
    ) 

ответ

0

Может быть, это не правильный путь ...

Не перегружайте сохранить в forms.py и положить создать каждый новый объект в представлениях после действительного(), как ...

def list(request): 
    if request.method == 'POST': 
     form = MyUploadForm(request.POST, request.FILES) 
     if form.is_valid(): 
      newdoc = form.cleaned_data['docfile'] 
      for file_obj in request.FILES.getlist('docfile'): 
       Document.objects.create(docfile=file_obj) 
      return HttpResponseRedirect(reverse('multiupload.views.list')) 
+0

, так как бы я пошел с помощью newdoc.user = request.user, потому что когда я получаю объект «списка», у него нет атрибута «пользователь» и спасибо за помощь. –

+0

'... create (user = request.user, docfile = ...' не работает? –

+0

да, что работает спасибо –

1

Я предлагаю вам использовать плагин pl-upload jQuery, я лично использую этот плагин, и это довольно легко и загрузка очень быстро.

Вот некоторые из примера:

Read a blog here

Code example you look here

Смежные вопросы