How to validate a json object in django

Viewed 13914

I'm submitting a JSON to a django view with AJAX. The JSON looks like the following:

{
   "code":"9910203040", // required
   "name":"Abc", // required
   "payments":[
      {
         "amount":300, // required
         "name":"efg", // required,
         "type": 2 // can be empty
      },
      {
         "amount":100,
         "name":"pqr",
         "type": 3
      }
   ]
}

The payments list can be of any size. How can I validate this in Django? Is it possible to use Django Forms to validate this? If it was Spring, I would create Request classes and use annotations on fields but can't figure out how to do this in Django.

4 Answers

You can use formsets. For example:

class UserForm(Form):
    code = forms.CharField()
    name = forms.CharField() 

class PaymentForm(Form):
    amount = forms.CharField()
    name = forms.CharField()
    type = forms.CharField()

class TestView(View):
    def post(self, request):
        response_data={}
        json_data=json.loads(request.body)
        UserFormSet = formset_factory(UserForm)
        userformset = UserFormSet(initial=[{'code' : json_data['code'], 'name' : json_data['name']}])
        PaymentFormSet = formset_factory(PaymentForm)
        paymentformset = PaymentFormSet(initial=json_data['payments'])
        for userform in userformset:
            #do something
        for paymentform in paymentformset:
            #do something
        return JsonResponse(response_data)
Related