2017-10-19 215 views
0

我正在構建一個文件上傳頁面,其中文件將以其名稱中的不同前綴保存(get_file_path函數使用instance.mname),但會通過相同的上載模型/表單。我想要在mname ='prefix'中的窗體視圖中聲明前綴。我怎樣才能從視圖中傳遞這個值來形成?將值傳遞給Django模型屬性

謝謝!

models.py

class Upload(models.Model): 

    mname = # need it to be passed 
    document = models.FileField(upload_to=get_file_path, validators=[validate_file_extension]) 
    upload_date=models.DateTimeField(auto_now_add =True) 

forms.py

class UploadForm(forms.ModelForm): 
    class Meta: 
     model = Upload 
     fields = ('document',) 

views.py

def uploadFile(request): 
    if request.method == "POST": 

     file = UploadForm(request.POST, request.FILES, mname='....') 
     if file.is_valid(): 
      file.save() 

回答

0

您可以將參數添加到窗體的__init__

UploadForm(forms.Form): 

    def __init__(self, path, *args, **kwargs): 
     super(UploadForm, self).__init__(*args, **kwargs) 
     self.fields['document'] = forms.FileField(upload_to=path, validators=[validate_file_extension]) 

而與此參數初始化形式:

file = UploadForm(request.POST, request.FILES, path='...') 
+0

謝謝!似乎非常接近工作,但返回__init __()有一個意想不到的關鍵字參數'upload_to' –

+0

您是否嘗試過沒有驗證器...這一個我剛剛從您的示例複製,但可能不屬於這裏。 – sinned

+0

我想這也許是因爲你不能使用帶有文件上傳的模型 –

相關問題