2017-02-02 3 views
1

Django 1.8 응용 프로그램에 간단한 메시지 기능을 추가해야합니다.Django : 인라인 formset을 사용할 때 업로드 된 파일이 손실되었습니다.

AttachmentFormset = inlineformset_factory(Message, Attachment, extra=1, exclude=[], can_delete=False) 

이 모든 형태가 어떻게 : 사용자가이 해당 formset를 사용하여 여러 첨부 파일이있는 메시지를 작성하는

class Attachment(models.Model): 
    message = models.ForeignKey(Message) 
    file = models.FileField() 

그것은 가능해야한다 : 나는 Message 모델과 다음 Attachment 모델을 가지고 내가보기에 양식을 처리하는 방법을

<form action="" method="post"> 
    {% csrf_token %} 
    {{ msg_form.as_p }} 

    {{ attachment_formset.management_form }} 
    {% for form in attachment_formset.forms %} 
     {{ form.as_p }} 
    {% endfor %} 
    <input class="button" type="submit" value="{% trans 'Send'%}"></input> 
</form> 

이는 다음과 같습니다 : 내 템플릿에 렌더링

if request.method == "POST": 
    msg_form = MessageForm(request.POST) 
    attachment_formset = AttachmentFormset(request.POST, request.FILES) 
    sender = request.user 
    if msg_form.is_valid() and attachment_formset.is_valid(): 
     msg = msg_form.save(sender=sender) 
     for aform in attachment_formset: 
      a = aform.save(commit=False) 
      a.message = msg 
      a.save() 

문제는 어떻게 든 request.FILES은 항상 비어 있으며 첨부 양식의 cleaned_data도 비어 있습니다. 업로드 된 파일은 어떻게됩니까? FileField으로 인라인 formset을 처리하는 올바른 방법은 무엇입니까?

답변

1

양식은에 enctype

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