1
2つのモデルがあります。主なものは企業に関する情報を含み、ForeignKeyモデルはファイルを企業モデルにリンクします。私は今すぐMultiFileFieldを自分のフォームに統合して、一度に複数のファイルをアップロードすることができます(django-multiuploadを使用)。ModelForm内でdjango-multiuploadを使用する
フォームを送信すると、「このフィールドは必須です」というメッセージが表示されます。私のMultiFileFieldのエラーです。
form = CompanyForm(request.POST, request.FILES, instance=current_company)
で私は行方不明になったrequest.FILES:仲間のジャンゴ - 初心者は同様の問題に遭遇し
# models.py
class Company(models.Model):
name = models.CharField(max_length=200)
note = models.TextField()
class CompanyData(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
document = models.FileField(upload_to="attachments")
# forms.py
class CompanyForm(forms.ModelForm):
attachments = MultiFileField(min_num=1, max_num=3, max_file_size=1024*1024*5)
class Meta:
model = Company
fields = '__all__'
def save(self, commit=True):
instance = super(CompanyForm, self).save(commit)
for each in self.cleaned_data['attachments']:
CompanyData.objects.create(document=each, company=instance)
return instance
# views.py
def company_edit(request, pk):
current_company = get_object_or_404(Company, pk=pk)
if request.method == "POST":
form = CompanyForm(request.POST, instance=current_company)
if form.is_valid():
current_company = form.save(commit=False)
current_company.save()
return redirect('company_detail', pk=current_company.pk)
else:
form = CompanyForm(instance=current_company)
contexts = {
'form': form,
}
return render(request, 'company_edit.html', contexts)
# company_edit.html
<form method="POST" class="post-form" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<button type="submit" class="save">Save</button>
</form>