我正在使用带有通用编辑视图(创建,更新,删除)的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__'
问题:
- 您认为出了什么问题?使用" request.files"以及"实例"one_answers" request.post'初始化文件字段的模型肯定?
- 获得有关实际是什么的调试消息的好方法发布?使用函数视图我曾经只是弹出'print('在这里,值x是',value_x) - 是否有更好的方法,而不是超载Modelforms的标准功能等?
我忽略了此解决方案(stackoverflow),该解决方案指出表单需要此标签才能正确将材料发送到request.files。
<form action="" method="post" **enctype="multipart/form-data"**>