我有这张表产品:
size
color
etc
和另一张桌子图片:
产品编号
picture
我已经从产品表生成了表单,但我还需要在该字段中向该产品添加图片。是否可以在产品生成的表单中添加图片字段?
提前致谢。
您可以在同一个表格中包含多个表格<form>
标签,通过使用prefix https://docs.djangoproject.com/en/dev/ref/forms/api/#prefixes-for-forms争论。
从图片模型表单中排除产品字段。在视图中,检查两个表单是否有效。如果两个表格都有效,则保存两个表格,但使用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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)