Решил проблему так:
Заполнение formData:
for (let k in arr) {
if (k === "contacts") {
for (let i in arr[k]) {
formData.append("contacts", JSON.stringify(arr[k][i]));
}
} else {
formData.append(k, JSON.stringify(arr[k]));
}
}
Полученные значения:
<QueryDict: {'email': [''], 'password': ['null'], 'password_confirm': ['null'], 'surname': [''], 'name': [''], 'middlename': [''], 'contacts': ['{"contact_type":"mail","contact":"ываыва"}', '{"contact_type":"mail","contact":"ывааааа"}'], 'city': ['null'], 'photo': ['undefined']}>
На сервере с помощью json.loads из строки получил json