2017-10-04 11 views
0

ModelForms를 일반 편집보기 (생성, 업데이트, 삭제)와 함께 사용하고 있습니다. 이 연습에서 내 목표 중 하나는 프레임 워크 (Django + Bootstrap + 플러그인 (예 : PDF.js))를 알게되고 가능한 한 사용자 정의 코드로 사용하는 것입니다.ModelForm을 사용하여 파일 업로드가 실패합니다 (오류 메시지는 표시되지 않음).

관리자 사이트를 통해 '문서'레코드를 만들 수 있으며 설정 한 '파일'위치에 업로드가 저장됩니다. 내 사이트를 검색 할 때 파일이 업로드되지 않지만 다른 필드는 업데이트됩니다 (분명히 양식 유효성 검사). (비 디지털 자산에 대한 포인터를 가질 수 있기를 원하기 때문에 FileField는 null입니다.) 관련 코드 :

# 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. ? 물론 FileFormats가있는 ModelForms는 'request.FILES'와 'instance'및 'request.POST'를 사용하여 초기화됩니까?
  2. 실제로 게시 된 내용에 대한 디버깅 메시지를 얻는 좋은 방법은 무엇입니까? ? 함수보기를 사용하여 나는 단지 'print (' , 값 X는 ', value_x 임)로 만들었습니다. ModelForms의 표준 함수 오버로드보다 나은 방법이 있습니까?

답변

0

내가이 솔루션 (stackoverflow)을 간과했는데, 양식에이 자료가 올바르게 전송되도록 요청해야한다고 지적했습니다. 파일.

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