我目前正在一个个人项目中工作,在一个页面(购买页面)中,将有主表单(包括产品名称、产品类别和产品规格字段)
现在,有一个链接“添加新产品类别”激活模式。该模态包括一个单独的形式
您看到的是最终输出,或者我希望页面是什么样子,我只是用html做的,不涉及django编码
我(愚蠢的)问题是,我将如何显示这两种形式?我不明白{{form}}是如何工作的
我使用代码{{form}}
成功地在模式中呈现了productCategoryForm,但在第二个表单productDetailsForm中执行相同操作时,它不会呈现或显示。它是空白的。我不确定这将如何运作
下面是我的Views.py和Forms.py代码
视图.py
def addNewProduct(响应):
c_form = productCategoryForm(response.POST)
p_form = productDetailsForm(response.POST)
if response.method == "POST":
if c_form.is_valid():
a = c_form.cleaned_data["productCategField"]
b = productCategoryModel(productcategoryCol=a)
b.save()
return HttpResponseRedirect("/acctg/purchases/")
if p_form.is_valid():
c = p_form.cleaned_data["productNameField"]
d = productModel(productnameCol=c)
d.save()
return HttpResponseRedirect("/acctg/purchases/")
context = {
"p_form": p_form,
"c_form": c_form
}
return render(response, 'purchases.html', context)
Forms.py
class productCategoryForm(forms.Form):
productCategField = forms.CharField(label="Product Category", max_length=100, widget= forms.TextInput(attrs={'class':'form-control col-sm-8 col-form-label'}))
class productDetailsForm(forms.Form):
productNameField = forms.CharField(label="Product Name", max_length=100, required=True, widget=forms.TextInput(attrs={'placeholder':'Enter Product Name', 'class':'form-control col-sm-8 col-form-label'}))
型号.py
# Create your models here.
class productCategoryModel(models.Model):
productcategoryCol = models.TextField()
def __str__(self):
return self.productcategoryCol
class productModel(models.Model):
productnameCol = models.TextField()
productspecsCol = models.TextField()
#productcategCol = models.ForeignKey(productcategoryCol, default=None, on_delete=models.CASCADE)
def __str__(self):
return self.productnameCol
谢谢你在这方面的帮助。谢谢大家!
为了避免意大利面代码,我通常将视图分开:
您可以通过上下文在模板中传递这两个表单
现在,在模板中,您可以使用
{{p_form}}
和{{c_form}}
。并为两种形式提供不同的操作和不同的视图编辑:
如果希望使用单个视图处理两个表单,则可以在模板内的“提交”按钮中使用“名称”属性
模板:
现在在视图中
相关问题 更多 >
编程相关推荐