Django:从另一个选项卡向生成的表单添加表单字段

2024-06-14 06:39:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个餐桌用品:
尺寸
颜色
等等

另一张桌子图片:
产品编号
图片

我已经从Products表生成了表单,但我还需要一个字段来向产品添加图片。是否可以在产品生成的表单中为图片添加字段?在

提前谢谢。在


Tags: 表单产品颜色尺寸图片products桌子用品
2条回答

简短的回答是肯定的。你必须小心你的模板和视图。在

你能分享你的代码吗。。。视图,django模型和模板。你用的是模型表格吗?为什么要把它们作为单独的模型(表)保存?在

我的建议是,如果不需要将模型分开,请编辑产品模型以包含图片。那么你的形式会很好地满足你的需要。在

希望这有帮助。如果没有,共享代码。在

通过使用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,
                                   })

模板应该如下所示:

^{pr2}$

相关问题 更多 >