1
我需要添加一個簡單的消息功能到Django 1.8應用程序。我有一個Message
模型和下列Attachment
型號:Django:上傳文件丟失時,使用內聯formset
class Attachment(models.Model):
message = models.ForeignKey(Message)
file = models.FileField()
應該可以爲用戶創建使用此表單集多個附件的郵件:
AttachmentFormset = inlineformset_factory(Message, Attachment, extra=1, exclude=[], can_delete=False)
這是所有形式如何渲染我的模板:
<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
來處理內嵌式表單的正確方法是什麼?