dji*_*ril 1 django file-upload
我想动态创建上传文件的目的地.但是,似乎'upload_to'选项仅适用于模型,而不适用于表单.所以下面的代码是错误的.
class MyForm(forms.Form):
Run Code Online (Sandbox Code Playgroud)fichier = forms.FileField(**upload_to='files/%m-%Y/'**)
在处理上载文件的视图中,目标是静态的.我怎样才能让它变得动态?
谢谢.
class YourFileModel(models.Model)
def upload_path(self, name):
name = do_sth_with_name(name)
folder = generate_folder_name(self.id, self.whatever_field)
return 'uploads/' + folder + '/' + name
file = models.FileField(upload_to=upload_path)
Run Code Online (Sandbox Code Playgroud)
评论后编辑
def handle_uploaded_file(file):
# generate dynamic path
# save file to that path
Run Code Online (Sandbox Code Playgroud)
这里的例子http://docs.djangoproject.com/en/dev/topics/http/file-uploads/#handling-uploaded-files
如果来自model的表单,则覆盖save()方法
class YourForm(forms.ModelForm):
fichier = forms.FileField()
def save(self):
if self.cleaned_data['fichier']:
file = handle_uploaded_file(self.cleaned_data['fichier'])
super(YourForm, self).save()
Run Code Online (Sandbox Code Playgroud)
如果不是来自模型的表单,请在视图中调用上传处理程序
def your_view(request):
#####
if form.is_valid():
file = handle_uploaded_file(form.cleaned_data['fichier'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2651 次 |
| 最近记录: |