【发布时间】:2012-04-27 05:55:42
【问题描述】:
我有这张桌子产品:
尺寸
颜色
等等
和另一张桌子图片:
产品编号
图片
我已经从 Products 表中生成了表单,但我还需要该字段来向该产品添加图片。是否可以在产品生成的图片表单中添加字段?
提前致谢。
【问题讨论】:
标签: python django forms django-forms
我有这张桌子产品:
尺寸
颜色
等等
和另一张桌子图片:
产品编号
图片
我已经从 Products 表中生成了表单,但我还需要该字段来向该产品添加图片。是否可以在产品生成的图片表单中添加字段?
提前致谢。
【问题讨论】:
标签: python django forms django-forms
您可以使用prefix 参数在同一个<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>
【讨论】:
render()的第一个参数是request
简短的回答是肯定的。你必须小心你的模板和视图。
您能否分享您的代码...查看、django 模型和模板。你在使用模型表格吗?为什么将它们作为单独的模型(表格)保存?
我的建议是,如果您不需要将模型分开,请编辑 Product 模型以包含图片。那么您的表单将很好地满足您的需求。
希望这会有所帮助。如果没有,请分享代码。
【讨论】: