私はこのテーブルを持っています 製品:
サイズ
色
など
と別のテーブル写真:
product_id
画像
Products テーブルからフォームを生成しましたが、その製品に画像を追加するためのフィールドも必要です。製品生成フォームに画像用のフィールドを追加することはできますか?
前もって感謝します。
私はこのテーブルを持っています 製品:
サイズ
色
など
と別のテーブル写真:
product_id
画像
Products テーブルからフォームを生成しましたが、その製品に画像を追加するためのフィールドも必要です。製品生成フォームに画像用のフィールドを追加することはできますか?
前もって感謝します。
前置引<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>
短い答えはイエスです。テンプレートとビューには注意が必要です。
コードを共有していただけますか...ビュー、djangoモデル、およびテンプレート。モデルフォームを使用していますか? それらを別々のモデル (テーブル) として保持しているのはなぜですか?
モデルを別々に保持する必要がない場合は、製品モデルを編集して画像を含めることをお勧めします。次に、フォームがニーズにうまく適合します。
お役に立てれば。そうでない場合は、コードを共有してください。