데이터 모집단에 대해 Ajax 호출로 장고 생성 양식을 사용하려고합니다. 나는 일반 ModelForm을 사용하고 있지만 inlineformset을 추가하면 숨겨진 ID 필드에 어떤 값을 채워야하는지 알 수 없습니다. 모든 제출은 새 인스턴스를 작성합니다. 주소가있는 학교의 경우 내 저장보기에 다음 번호가 있습니다.AJAX를 통해 Django 폼 값을 설정하는 방법
내 양식을 채우는 JS입니다. #id_address_set-0-school
및 #id_address_set-0-id
은 장고 생성 필드 2 개입니다.
$('a[name^="editSchool"]').click(function(e) {
e.preventDefault();
$.ajax({
url: '/schooljson/' + this.getAttribute('schoolid') + '/'
}).done(function(data) {
$('#id_school_code').val(data.school_code);
$('#id_full_name').val(data.school_name);
$('#id_student_count').val(data.school_students);
$('#id_school_pk').val(data.school_pk);
$('#id_address_set-0-address_line_1').val(data.address_line_1);
$('#id_address_set-0-address_city').val(data.address_city);
$('#id_address_set-0-address_state').val(data.address_state);
$('#id_address_set-0-address_zip').val(data.address_zip);
$('#id_address_set-0-school').attr('value', data.school_pk);
$('#id_address_set-0-id').attr('value', data.address_pk);
$('#addSchoolModal').modal('show');
});
어떤 아이디어가 있습니까?
흥미 롭습니다. 아마도 더 나은 방법 일 것입니다. 나 또한 school_address()에서 케이스를 설명해야합니다. 일부 클릭은 편집하고, 폼을 채우고, 취소하고, 새로 생성하기 위해 빈 formset으로 재설정해야합니다. 아마 원래의 방법이 효과가없는 이유를 알고 있다면 아마이 길로 갈 것입니다. 그러나 여전히 일반적으로 궁금합니다. 해당 입력란이 양식에있는 학교와 일치하는 경우 백엔드에서 일치하지 않는 이유는 무엇입니까? 감사합니다. – Dustin
@Dustin이 내 대답을 수락 해 주셔서 감사합니다. 다시 코드를 살펴 보았고 'pk'에 대한 참조가 실제로 'id'여야한다고 생각합니다. 따라서 data.school_pk는 data.school_id 여야하고 data.address_id는 data.id 여야합니다. 질문을 편집하고 json을 만드는 함수의 코드를 추가하면 도움이됩니다. Firefox 용 Firebug 확장 프로그램이나 Chrome 용 내장 크롬 개발자 도구를 사용하는 경우에는 해당 파일을 확인하는 것이 좋습니다. –