【问题标题】:How to use HTML input type file as FileField type in Django?如何在 Django 中使用 HTML 输入类型文件作为 FileField 类型?
【发布时间】:2015-09-16 23:03:40
【问题描述】:

我的 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)相关联?

【问题讨论】:

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


    【解决方案1】:

    您可以为此使用 Django ModelForm。

    为您的模型“td_profpic”创建一个表单:

    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 }},它会使用您的字段自动为您创建一个表单。
    那么您就不需要为自己创建自定义字段了。

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 1970-01-01
      • 2017-08-28
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 2018-10-09
      相关资源
      最近更新 更多