2011-03-19 8 views
4

저는 장고 초보자입니다. 나는 내 문제가 사소하다고 생각하지만 해결할 수는 없다. 나는 1 FileField와 함께 모델이라는 문서를 가지고 :ModelForm에 의해 FileField에서 django 모델의 새 인스턴스를 추가하는 방법은 무엇입니까?

class Document(models.Model): 
    file = models.FileField(upload_to="documents") 
    created = models.DateTimeField(auto_now_add=True) 
    modified = models.DateTimeField(auto_now=True) 
    category = models.ForeignKey(DocumentCategory) 
    title = models.CharField(max_length=255, unique=True) 
    description = models.TextField() 

    def __unicode__(self): 
     return self.title 

나는이 ModelForm으로 새로운 인스턴스이 클래스를 추가 할 :

views.py에서
class DocumentForm(ModelForm): 
    class Meta: 
     model = Document 

내가 가진 :

def add_document(request): 
    if request.method == 'POST': 
     form = DocumentForm(request.POST, request.FILES) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/') 
     else: 
      return render_to_response('add_document.html', {'form':form}, context_instance=RequestContext(request)) 
    else: 
     form = DocumentForm() 
    return render_to_response('add_document.html', {'form':form}, context_instance=RequestContext(request)) 

템플릿 (예 : add_document.html) :

{% extends "base.html" %} 
{{block content %} 
<form enctype="multipart/form-data" method="post" action="">{% csrf_token %} 
{{form}} 
<input type="submit" value="Add document" /> 
</form> 
{% endblock %} 

관리자 인터페이스에서 데이터베이스에 모델을 올바르게 추가하고 추가 된 파일은 "upload_to"현지화에 있습니다. 내 양식이 작동하지 않습니다. 내가 양식을 제출할 때 양식 파일 필드에 오류가 발생합니다 : "이 필드는 필수 항목입니다!" 모델에 FileField가 없으면 이전에 작동합니다. 나는 장고를 가지고있다. 1.2.5 나는 3 일 동안 아무 것도하지 않고 고문한다. 나는 필사적이다. 내 언어를 유감스럽게 생각합니다. 도와주세요!

+1

. 이상한 들여 쓰기 이외의 문제는 찾을 수 없다. –

+0

'import pdb; pdb.set_trace()'POST 메소드를 테스트 한 직후. 그런 다음 요청 개체를 검사하고 단서를 요청하십시오. 행운을 빕니다. –

+0

'{{form}}'은 (는) 기본값이 {{form.as_p}}입니까? –

답변

0

지금과 같이 파일이 필요합니다. 파일없이 양식을 저장하려고합니까? 이 파일은 선택 사항 확인하려면
, 당신은이 방법으로 그것을 정의 할 필요가 : A와

class Document(models.Model): 
    file = models.FileField(upload_to="documents", blank=True, null=True) 

추가 메모를, 당신은 형태가 작업 매개 변수는 올바르지 않을 수 있습니다.
URL이어야합니다. 보통 Django에서는 "."을 넣고 싶지만 완전히 빈 문자열 ("")은 넣지 않을 것입니다. 그것이 문제가 될 수 있는지 없는지는 모르겠다.

0

문서 모델에서는 파일을 upload_t0 "문서"로 설정했지만 정확히 어디에 업로드 할 것인지를 지정합니다. 이상한

May be this will help.