2012-12-12 93 views
2

我不會說英語嗎?但我在Django有問題。 我有型號:Django:ajax&request

class Model1(models.Model): 
    model2 = models.ManyToManyField(Model2) 
    #... 
class Model2(models.Model): 
    model3 = models.ForeignKey(Model3) 
    #... 
class Model3(models.Model): 
    custom = models.CharField() 

有觀點

def simple(request, simple_id): 
    if request.method == 'POST': 
     if request.is_ajax(): 
      if 'delete' in request.POST: 
       id3 = request.POST.get('delete', '') 
       Model1.objects.get(id = simple_id).model2.filter(model3__id = id3).delete() 

也就是說,名稱提交表單時=「刪除」阿賈克斯已刪除所有屬於模型2與現場相同的值對象「model3」 這裏有一塊模板:

<form action="" method="post" id="simple">{% csrf_token %} 
<input type="submit" name="delete" id="simple_delete" value=""> 
</form> 

從JS傳遞的值:

$('.deletebutton').click(function(){ 
    id = $(this).attr('data-id'); 
    $('#simple_delete').attr('value', id); 
    $('#simple').ajaxForm(); 
    $('#simple_delete').click(); 
}); 

嗯,分別插件jquery.form.js也連接

問題是這樣的 - 如果沒有提交所有AJAX是正常的,它的工作原理......如果用Ajax是一個錯誤,如不正確i​​nt值...如何使它通過Ajax工作?

+0

顯示完整的錯誤回溯 – inoks

+0

你試過在服務器端打印該值。查看通過Ajax提交的值是什麼? –

+0

號碼怎麼辦?我是初學者 – user1896790

回答

2

試試這個

$('.deletebutton').click(function(){ 
    id = $(this).attr('data-id'); 
    $.ajax(function(){ 
     type:"POST", 
     url :"/your_url/", 
     data:{ 
       'id'=id, 
     } 
    }).done(function(result){ 
     alert('your json object result render by view :'+result) 
    }) 

我認爲它的工作, 和我沒有得到笏你正在即$( '#simple_delete')做點擊()。 可以請你介紹有關

鑑於

obj = Model1.objects.get(id = simple_id) 
model2.objects.filter(model3__id = id3).delete() 

我只是拆單網上查詢分成兩行,如果沒有工作 使用.select_related()

+0

這是實現這個目標的正確方法,我只想添加一點:您必須根據您的urls.py文件相對於刪除視圖更改「/ your_url /」。此外,如果該URL(如我所料)類似於「/ delete/ /」,您可以傳遞一個空的數據字典(data:{}),因爲您的url已經包含了您的simple_id視圖似乎被配置爲接受此) –

+0

是的,你是對的..! – kartheek

+0

非常感謝,它的作品 – user1896790