2017-08-15 103 views
0

在現有的形式保存多個文件我用FileField附加型動物類型的文件.txt, .pdf, .png, .jpg, etc的,做工精細,但現在我需要的那場接受幾個文件,所以我用了propertie multiple的輸入接受更多的一個文件,但是當存儲在我的數據庫只存儲第一個選定的文件和媒體文件夾的路徑只存儲一個文件中沒有別人,這是我有:使用的FileField

forms.py 
class MyForm(forms.Form): 
    attachment = forms.FileField(required=False,widget=forms.ClearableFileInput(attrs={'multiple': True})) 

models.py 
class MyFormModel(models.Model): 
    attachment = models.FileField(upload_to='path/', blank=True) 

是更多鈔票來存儲數據庫的所有路徑以這種方式分離path/file1.txt,path/file2.jpg,path/file3.pdf並將三個文件存儲在媒體文件夾中?我需要一個自定義的FileField來處理這個問題或者視圖是我需要處理的嗎?

編輯:答案@harmaahylje給我出現在文檔中,但不是我使用1.8的版本,這會影響解決方案嗎?

回答

1

做這樣的事情在forms.py

class FileFieldForm(forms.Form): 
    attachment = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True})) 
+0

,讓我多選擇輸入,但在DB只需存儲多個文件中的一個文件的路徑,並將一個文件存儲在我的媒體文件夾中。 –

+0

你說得對。這個問題的實際解決方案是我的答案與@ harmaahylje的回答結合在一起,並且在'#對每個文件做了一些事情之後,在 –

1

Django文檔有解決方案https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#uploading-multiple-files

在你看來:

def post(self, request, *args, **kwargs): 
     form_class = self.get_form_class() 
     form = self.get_form(form_class) 
     files = request.FILES.getlist('file_field') 
     if form.is_valid(): 
      for f in files: 
       ... # Do something with each file. 
      return self.form_valid(form) 
     else: 
      return self.form_invalid(form) 
+0

之下。「我嘗試在附件字段中分配f文件,但仍然只有一條路徑,我想念做什麼。 –

+0

@ M.Gar您需要爲每個文件創建一個新對象。 'MyFormModel.objects.create(附件= F)' – harmaahylje

+0

這給了我這個錯誤'經理無法通過MyFormModel instances'訪問。 –