複数の画像を django 形式で 1 つのモデルに追加する必要があります。私は調査を行い、django 以外のフォームについては、django-multiuploadをセットアップしようとしました。
私のmodels.py:
class Profile(models.Model):
...
...
first = models.ImageField("first", upload_to='first')
second = models.ImageField("second", upload_to='second')
...
forms.py で:
class AddForm(forms.ModelForm):
first = MultiImageField(min_num=1, max_num=20)
second = MultiImageField(min_num=1, max_num=4)
views.py で:
class UploadView(FormView):
template_name = 'finder/submit.html'
form_class = AddForm
success_url = '/'
def form_valid(self, form):
for each in form.cleaned_data['first']:
Profile.objects.create(first=each)
for each in form.cleaned_data['second']:
Profile.objects.create(second=each)
return super(UploadView, self).form_valid(form)
フォームを送信すると、このフォームは複数の Profile オブジェクトを作成し、最初と 2 番目のフィールドのみが入力されます。
残りのフィールド (first/second 以外) と複数の first/second フィールドを持つモデルを 1 つだけ作成するにはどうすればよいですか?
multiupload を追加する前の関数ベースのビューでしたが、機能させることができませんでした。何とか変更した方が簡単でしょうか?
def add_form(request, *args, **kwargs):
if request.method == "POST":
form = AddForm(request.POST)
if form.is_valid():
profile = form.save(commit=False)
profile.save()
return redirect('/', pk=profile.pk)
else:
form = AddForm()
return render(request, 'finder/submit.html', {'form': form})