文件上传使用Modelform失败 - 虽然没有错误消息



我正在使用带有通用编辑视图(创建,更新,删除)的Modelforms。我在此练习中的目标之一是了解一些框架(Django Bootstrap a插件(例如pdf.js)),并使用尽可能少的自定义代码。

我可以通过管理站点创建"文档"记录,并且上传保存在我设置的"文件"位置中。当我尝试浏览网站时,尽管将更新其他字段(显然是表单验证),但没有上传文件。(FileFiels是无效的,因为我希望能够将指向非数字资产的指针)。相关代码:

    # models.py
class document(models.Model):
    ref_file = models.FileField(upload_to='documents/', blank=True, null=True)
    def get_absolute_url(self):
        return reverse('knowledge_manager:doc_detail', kwargs={'pk': self.pk})
# urls.py
urlpatterns = [
    url(r'^doc$', views.docIndex.as_view(), name='doc_index'),
    url(r'^doc/(?P<pk>w+)/det', views.docUpdate.as_view(), name='doc_detail'),
    url(r'^doc/new/$', views.docCreate.as_view(), name='doc_create'),
    url(r'^doc/(?P<pk>w+)/update', views.docUpdate.as_view(), name='doc_update'),
    url(r'^doc/(?P<pk>w+)/del', views.docDelete.as_view(), name='doc_delete')
]
# views.py
class docIndex(generic.ListView):
    model = document
    template_name = 'knowledge_manager/_index.html'
    context_object_name = 'document_set'
class doc_detail(generic.DetailView):
    model = reference
    template_name = 'knowledge_manager/doc_detail.html'
    context_object_name = 'document'
    form_class = doc_form
    success_url = reverse_lazy('knowledge_manager:doc_index')
class docCreate(generic.CreateView):
    model = document
    template_name = 'knowledge_manager/doc_detail.html'
    form_class = doc_form
    success_url = reverse_lazy('knowledge_manager:doc_index')
class docUpdate(generic.UpdateView):
    model = document
    template_name = 'knowledge_manager/doc_detail.html'
    context_object_name = 'document'
    form_class = doc_form
    success_url = reverse_lazy('knowledge_manager:doc_index')
class docDelete(generic.DeleteView):
    model = document
    success_url = reverse_lazy('knowledge_manager:doc_index')
# forms.py
class doc_form(ModelForm):
    class Meta:
        model = document
        fields = '__all__'

问题:

  1. 您认为出了什么问题?使用" request.files"以及"实例"one_answers" request.post'初始化文件字段的模型肯定?
  2. 获得有关实际是什么的调试消息的好方法发布?使用函数视图我曾经只是弹出'print('在这里,值x是',value_x) - 是否有更好的方法,而不是超载Modelforms的标准功能等?

我忽略了此解决方案(stackoverflow),该解决方案指出表单需要此标签才能正确将材料发送到request.files。

<form action="" method="post" **enctype="multipart/form-data"**>

最新更新