【发布时间】:2018-03-15 08:47:19
【问题描述】:
我将 ModelForms 与通用编辑视图(创建、更新、删除)一起使用。我在本练习中的目标之一是了解一些框架(Django + Bootstrap + 插件(例如 PDF.js))并尽可能少地使用自定义代码。
我可以通过管理站点创建一个“文档”记录,并且上传保存在我设置的“文件”位置。当我尝试浏览我的网站时,没有上传任何文件,尽管其他字段将被更新(显然表单验证)。 (FileField 可以为空,因为我希望能够有一个指向非数字资产的指针)。相关代码:
# 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__'
问题:
- 您认为哪里出了问题?带有 FileFields 的 ModelForms 肯定会使用“request.FILES”以及“instance”和“request.POST”进行初始化吗?
- 什么是获取有关实际情况的调试消息的好方法 发布?使用我以前只是弹出“打印(”)的函数视图 这里,值 X 是', value_x) - 有没有比仅仅重载 ModelForms 等标准函数更好的方法?
【问题讨论】:
标签: django-forms django-generic-views django-file-upload