2011-02-15 3 views
0

nested inlines에 자바 스크립트 솔루션을 구현했기 때문에이 질문을 던집니다. (예를 들어, 해킹이 느껴지지만, 가장 쉽고 빠른 해결책으로 보였습니다 ...) 이로 인해 예기치 않은 결과가 나왔습니다.제출 된 django 폼은 실제로 언제 데이터베이스에 저장됩니까?

jQuery를 정상적인 형태는 단지 (명백하게) 무시 제출 관리자 양식에 추가 입력 섹션을 추가 그래서 나는 다른 .ajaxSubmit 그래서

function ajaxSubmit(form) { 
    $(form).ajaxSubmit({ 
    success: function() { 
     var item_data = $('.item-fields').fieldSerialize(); 
     var post_url = '/admin/menu_generator/' + context + '/' + menu_id + 'items/new/'; 
     $.post(post_url, item_data); 
    }; 
    }); 
}; 

ajaxSubmit()와 $ (선택) 같은 jQuery forms plugin를 사용 심하게 명명 된, 사과.

어느 쪽이든, 그 비트의 코드는 정상적으로 양식을 제출하고, 성공하면 jQuery가 추가 한 입력을 처리하는 두 번째 POST 요청을 수행합니다. 이 내가 생각한, jQuery 입력을 아직 만들지 않은 데이터베이스에 물건이 필요할 때 문제를 방지 할 것이라고 생각했습니다. 명확성을 위해 예 :

사용자는 섹션을 만들 수 있으며 각 섹션에는 많은 항목이있을 수 있습니다. 사용자가 새 섹션을 만들고 새 항목을 추가하는 경우 일반 폼을 수행하지 않고 먼저 해당 섹션이 데이터베이스에 없으므로 항목을 만들 수 없습니다!

불행히도 내 솔루션이 작동하지 않습니다. 심지어 ajax를 제출 한 후에 새 섹션은 실제로 모든 js 코드 완료 후까지 데이터베이스에 기록되지 않습니다.이 사실은 저와 아마 누군가가 나에게 계몽 할 수 있다는 것을 놀라게했을까요? 양식 플러그인이이 작업에 적합하지 않을 수도 있습니다.

EDIT :: 내 코드에 구문 오류가있어서 작동하지 않습니다 ... 위의 스 니펫에서 볼 수 있듯이 성공 함수 끝에 세미콜론이 있습니다. 그것은 부서지는 물건이었다.

답변

1

양식은 (없음 - 아약스 게시물에 대한) 뷰의 경로를 포함해야한다 :

<form action="/test" method="post" accept-charset="utf-8" id="testform"> 

JQuery와 코드 :

$('document').ready(function(){ 
$("#testform").submit(function(){ 
    $.ajax({ 
     type: "POST", 
     url: "/test", 
     data: $(this).serialize(), 
     success: function(data) { 
      ..... 
    }); 
    $('#testform')[0].reset(); 
    return false; 
}) ... 

보기 :

def test(request): 
if request.is_ajax(): 
    name = request.POST.get('message', False) 
    m = Message(message=name,user_id=request.user) 
    m.save() 
else: ... 
+0

그렇진 . 표준 아약스 양식 제출을위한 완벽한 -하지만 내 솔루션은 좀 더 필요합니다. 기본적으로 한 번의 클릭으로 두 번의 양식 제출을하고 있었고 표준 양식 버튼을 사용하지 않고 추가 작업을 복잡하게 만들었습니다. 나는 언급하지 않았습니다. (링크를 사용했는데 이것은 모든 것이 매우 익숙한 또 다른 이유입니다). 실제로 알 수 없었던 단순한 구문 오류가 실제로 작동하지 않는다는 것이 밝혀졌습니다. 편집을 참조하십시오. –

+0

전송할 데이터를 직렬화하여 먼저 경고하십시오 (작동하는지 확인하기 위해). 그런 다음 뷰에 제출하여 해당 개체에 저장하십시오. –

관련 문제