Models.py
class Produto(models.Model):
uuid = models.CharField(max_length=50, primary_key=True, editable=False, default=gen_uuid)
produto = models.CharField(max_length=100, unique=False, verbose_name="Item")
class Meta:
verbose_name = "Produto"
verbose_name_plural = "Produtos"
class Item(models.Model):
uuid = models.CharField(max_length=50, primary_key=True, editable=False, default=gen_uuid)
tipo = models.CharField(max_length=100, null=False, blank=True, unique=False, verbose_name="tipo_mtr")
class Meta:
verbose_name = "Item"
verbose_name_plural = "Itens"
class Orcamento(models.Model):
uuid = models.CharField(max_length=50, primary_key=True, editable=False, default=gen_uuid)
quantidade = models.IntegerField(max_length=10, unique=False, null=True, verbose_name="qtde")
produto = models.ForeignKey(Produto, verbose_name="Produto")
tipo = models.ManyToManyField(Item, verbose_name="Item")
class Meta:
verbose_name = "Orcamento"
verbose_name_plural = "Orcamentos"
unique_together = ("produto", "uuid")
def __unicode__(self):
return unicode(self.produto)
我的forms.py(OrcamentoForm)
class OrcamentoForm(ModelForm):
tipo_id = ModelMultipleChoiceField(queryset=Item.objects.all(), required=True, widget=SelectMultiple(attrs={"style":"width:500px",}), help_text="Coloque o Tipo de Medida - Requerido")
quantidade = IntegerField(label="Quantidade", required=True, help_text="Coloque a Quantidade - Requerido")
produto_id = ModelMultipleChoiceField(queryset=Produto.objects.all(), widget=SelectMultiple(attrs={"style":"width:500px",}), required=True, help_text="Escolha o Produto - Requerido")
def __init__(self, *args, **kwargs):
super(OrcamentoForm, self).__init__(*args, **kwargs)
# without the next line label_from_instance does NOT work
self.fields['produto_id'].queryset = Produto.objects.all()
self.fields['produto_id'].label_from_instance = lambda Produto: "%s" % (Produto.produto)
self.fields['tipo_id'].queryset = Item.objects.all()
self.fields['tipo_id'].label_from_instance = lambda Item: "%s" % (Item.tipo)
class Meta:
model = Orcamento
fields = ["quantidade", "tipo_id", "produto_id" ]
我的views.py
def orcamento(request):
form = OrcamentoForm(request.POST or None, request.FILES or None)
if request.method == 'POST':
form.save()
return render_to_response("webSite/teste.html", context_instance = RequestContext(request))
else:
return render_to_response("webSite/orcamento.html", {"form": form }, context_instance=RequestContext(request))
if form.is_valid():
中有views.py
,请不要在表mysql中保存表单。
帮助我:(
答案 0 :(得分:3)
如果在执行form.is_valid()
检查时未保存表单,则表示表单无效。在这种情况下,我们应该为每个字段显示表单找到的错误。为此,如果表单无效,首先应将表单数据传递给模板。
#views.py
def orcamento(request):
form = OrcamentoForm(request.POST or None, request.FILES or None)
if request.method == 'POST':
if form.is_valid():
form.save()
return render_to_response("webSite/teste.html", context_instance = RequestContext(request))
#Following will run in all cases except when form was valid
return render_to_response("webSite/orcamento.html", {"form": form }, context_instance=RequestContext(request))
您可以显示表单引发的所有错误或模板中的字段错误。请参阅django documentation详细说明。
答案 1 :(得分:0)
当我调用.is_valid
而不是.is_valied()
时,发生了相同的错误。
您可能想检查是否是这种情况。
答案 2 :(得分:0)
如果您从未在 ()
中包含 .is_valid()
,也会发生此错误。将有效性检查器设为 .is_valid:
也会引发相同的错误。