如何在Django中将HTML输入类型文件用作FileField类型?

时间:2015-06-30 08:34:59

标签: python django django-models django-forms django-templates

我的DJango模板中有以下代码,其中div和输入类型文件的格式相同,因此当您点击图像时,将显示上传窗口。

<div class="prof" style="background:url(https://c1.staticflickr.com/3/2669/5830411257_b21bf9e931_b.jpg);background-size:cover">
<input type="file" id="uploadpic" class="uploadpic" />
</div>

演示:

http://jsfiddle.net/sathish_opr/s54uxkx9/

我的要求是我可以在Django模型中将此模板的输入类型文件用作FileField,以便可以访问此输入文件html标记的upload_to。

我正在寻找类似的一些工作模型,但还无法找到。 怎么可能这样呢?有什么建议吗?

在我的 Models.py

class td_profpic(models.Model):
id = models.CharField(max_length=300,blank=True)
propicpath = models.FileField(upload_to=get_upload_file_name)
class Meta:
    managed = False
    db_table = "td_profpic"

def get_upload_file_name(instance,filename):
return "%s_%s" % (str(time()).replace('.','_'),filename)

在这种情况下,如何将模板的输入类型文件标签与模型字段(FileField - propicpath)联系起来?

1 个答案:

答案 0 :(得分:0)

你可以使用Django ModelForm。

为您的模型创建表单&#39; td_profpic&#39;用:

from django.forms import ModelForm
# import your model from your application

Class td_profpicForm(forms.Form):
model= td_profpic

之后,在您的观点中导入此表单:
from forms import td_profpicForm
并通过创建视图并将此表单作为上下文发送给模板 在Django模板中,将此表单呈现为{{form.as_p}}或{{form.as_table}},它将自动为您创建一个表单。
您不需要为自己创建自定义字段。