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