2013-12-22 42 views
-1

我有一個Song模型,具有votes屬性。我有一個Vote as Favourite按鈕顯示在每個Song對象下面。我希望當用戶點擊Vote as Favourite按鈕時,與Song對象關聯的votes屬性應增加1,並且應禁用所有的Vote as Favourite按鈕。使用Dajaxice獲取AJAX呼叫的對象值

HTML

{% for song in dj_song_list %} 
    <div> 
     <p class="song"><h3><strong>{{ song.name }}</strong></h3></p> 
     <p><strong>Artist: </strong>{{ song.artists}}</p> 
     <button type="button" class="btn btn-default btn-custom" id='vote' onclick="Dajaxice.hunt.disable_button(Dajax.process)">Vote as Favourite</button> 
    </div> 
{% endfor %} 

我使用dajaxice/dajax我的AJAX調用。這是我想出我的ajax.py

ajax.py

from django.utils import simplejson 
from dajaxice.decorators import dajaxice_register 
from dajax.core import Dajax 

@dajaxice_register 
def disable_button(request): 
    dajax = Dajax() 
    dajax.assign('#vote', 'disabled', 'disabled') 
    return dajax.json() 

@dajaxice_register(method="POST") 
def update_votes(request, song): 
    song.votes += 1 
    song.save() 
    return simplejson.dumps({'message':'Thank you for voting'}) 

JS

function callback(data){ 
    alert(data.message); 
} 

如何獲得Song對象的值發送到update_votes()

disable_button()僅禁用第一個投票按鈕。我怎樣才能禁用所有的投票按鈕?

如何使用相同的按鈕onclick屬性來調用update_votes()disable_button()

回答

1

以下是如何更新投票的方法。你不需要update_votes是一個ajax函數。

def update_votes(song_id): 
    song = Song.objects.get(id=song_id) 
    song.votes += 1 
    song.save() 

然後,您可以在disable_button中調用此函數。

@dajaxice_register 
def disable_button(request, song_id): 
    update_votes(song_id) 
    #disable the buttons 
    return #whatever 

你確定你正在使用正確的選擇器來禁用你的按鈕嗎?