3

複数の画像を 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})
4

1 に答える 1