Django表单向导:如何手动验证表单

时间:2020-09-22 20:44:50

标签: django django-formwizard

我一直在阅读“表单向导”文档,试图寻找一种可以修改请求的方法。请在之前验证表单。在调用is_valid()之后,似乎只有处理数据的方法。

通过修改我的意思是:

  updated_request = request.POST.copy()

  updated_request.update({
       'artist': request.user.profile.person.id,
       'musicLength': 60, # Just a placeholder, will be changed during validations
  })

  mainForm = UploadSingle(updated_request, request.FILES, instance=instance)

这样做的主要原因是因为我使用的是ajax,其中一些其他数据随请求一起传递。我希望能够自行验证,而不是通过表单向导在后台进行验证

3 个答案:

答案 0 :(得分:0)

我认为您需要覆盖模型的save()功能并创建自己的验证规则。

Check this article

答案 1 :(得分:0)

最适合我的方法是jQuery验证器,您可以在此线程中更详细地了解:

How to add validation rules with messages in jQuery validation?

例如:

$(document).ready(function () {

    $("#account_info").validate({
        rules: {
            phone_number: {
                required: true
            },
            recipient_name: {
                required: true,
                minlength: 6  // <-- removed underscore
            }
        },
        messages: {
            phone_number: {
                required: "this field is required"
            },
            recipient_name: {
                required: "Enter recipient name",
                minlength: "Name should be at least {0} characters long" // <-- removed underscore
            }
        },
        submitHandler: function (form) { // for demo
            alert('valid form');  // for demo
            return false;  // for demo
        }
    });

});

答案 2 :(得分:0)

好,终于找到了解决方案。我要做的就是覆盖WizardView.get_form()post()。如get_form的表单向导文档所述:

此方法为给定步骤构造表单。

post()是自我解释。由于需要将post返回给我的ajax调用,我最终覆盖了JsonResponse