2

私はこのテーブルを持っています 製品:
サイズ

など

と別のテーブル写真:
product_id
画像

Products テーブルからフォームを生成しましたが、その製品に画像を追加するためのフィールドも必要です。製品生成フォームに画像用のフィールドを追加することはできますか?

前もって感謝します。

4

2 に答える 2

3

前置引<form>数を使用して、同じタグに複数のフォームを含めることができます。

画像モデル フォームから製品フィールドを除外します。ビューで、両方のフォームが有効かどうかを確認します。両方のフォームが有効な場合は、両方のフォームを保存commit=Falseしますが、製品を手動で設定できるように画像フォームに使用します。

すべてをまとめると、フォームとビューは次のようになります。

class ProductForm(forms.ModelForm):
    class Meta:
        model = Product

class PictureForm(forms.ModelForm):
    class Meta:
        model = Picture
        exclude = ('product',)

def my_view(request):
    if request.method == "POST":
        product_form = ProductForm(prefix="product", data=request.POST)
        picture_form = PictureForm(prefix="picture", data=request.POST, files=request.FILES)
        if product_form.is_valid() and picture_form.is_valid():
            product = product_form.save()
            picture = picture_form.save(commit=False)
            picture.product=product
            picture.save()
            return HttpResponseRedirect("/success_url/")
    else:
        product_form = ProductForm(prefix="product")
        picture_form = PictureForm(prefix="picture")
    return render(request, "my_template.html", {'product_form':product_form, 
                                   'picture_form': picture_form,
                                   })

テンプレートは次のようになります。

<form>
  <table>
    <tbody>
      {{ product_form }}
      {{ picture_form }}
    </tbody>
  </table>
  <p><input type="submit" value="Submit" /></p>
</form>
于 2012-04-15T20:45:50.037 に答える
0

短い答えはイエスです。テンプレートとビューには注意が必要です。

コードを共有していただけますか...ビュー、djangoモデル、およびテンプレート。モデルフォームを使用していますか? それらを別々のモデル (テーブル) として保持しているのはなぜですか?

モデルを別々に保持する必要がない場合は、製品モデルを編集して画像を含めることをお勧めします。次に、フォームがニーズにうまく適合します。

お役に立てれば。そうでない場合は、コードを共有してください。

于 2012-04-15T20:14:13.490 に答える