1
Django 1.8アプリケーションに単純なメッセージング機能を追加する必要があります。私はMessage
モデルと、次のAttachment
モデルを持っている:Django:インラインフォームセットを使用するとアップロードされたファイルが失われる
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
でインラインフォームセットを処理する正しい方法は何ですか?