Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ModelForm在第一个错误后失败,并出现相同的错误_Django_Django Forms - Fatal编程技术网

Django ModelForm在第一个错误后失败,并出现相同的错误

Django ModelForm在第一个错误后失败,并出现相同的错误,django,django-forms,Django,Django Forms,我对Django ModelForm有一种奇怪的情况 每当我第一次在Django中提交正确的模型表单时,我都没有问题 但是,每当我第一次填写一个不正确的表单,从is_valid()中获取错误并尝试重做以前正确的表单时,它都会显示相同的错误(具有此标题的产品已经存在) 尽管我输入了不同的标题(它保留了以前的错误) 谢谢你的帮助 def add_product(request): if request.method == 'POST': form = ProductForm(

我对Django ModelForm有一种奇怪的情况

每当我第一次在Django中提交正确的模型表单时,我都没有问题

但是,每当我第一次填写一个不正确的表单,从is_valid()中获取错误并尝试重做以前正确的表单时,它都会显示相同的错误(具有此标题的产品已经存在) 尽管我输入了不同的标题(它保留了以前的错误)

谢谢你的帮助

def add_product(request):
    if request.method == 'POST':
        form = ProductForm(request.POST, request.FILES)
        # Basic form validation: Checking what to submit with the model. Type checking (see the the schema is enforced)

        if form.is_valid():
            product = form.save(commit=False)
            product.save()


            return HttpResponseRedirect(reverse('single_product', args=(product.slug,)))
    else:
        form = ProductForm()
    return render_to_response("products/add.html", locals(), context_instance=RequestContext(request))
在欧芹自定义验证出现错误后,这种情况似乎会发生,在我更正错误并发送表单后,它们会有点“停留”

表格如下:

@parsleyfy
class ProductForm(ModelForm):    
    class Meta:
        model = Product
        fields = ('title', 'description', 'price', 'file')

    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.disable_csrf = True
        self.helper.layout = Layout(
            Div(
                Div(Field('file'), css_class='col-md-4'),
                Div(Field('title'), css_class='col-md-9'),
                Div(Field('description'), css_class='col-md-12'),
                Div(Field(PrependedText('price', '$')), css_class='col-md-7'),
                'preview',
                'screenshot',
                css_class='row',
                )
        )
        super(ProductForm, self).__init__(*args, **kwargs)

这意味着具有不同名称的产品也已经存在


您的视图代码已经过时,但正确无误,应该可以正常工作。

我刚刚注意到,如果我禁用django parsley,问题就会消失。这是我得到的自定义检查代码。也许你能看到一些错误?var checkInput=function(){instance=$('#product').parsley();if(instance.isValid()){var file=document.getElementById('id#file').files[0];}}您似乎忘记了显示表单本身的代码。