-1

属性を持つSongモデルがありvotesます。各オブジェクトの下にVote as Favouriteボタンが表示されます。SongユーザーがVote as Favouriteボタンをクリックvotesすると、そのオブジェクトに関連付けられた属性Songが 1 増加し、すべてのVote as Favouriteボタンが無効になる必要があります。

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 %}

AJAX 呼び出しに dajaxice/dajax を使用しています。これは、私の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()

4

1 に答える 1

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

また、正しいセレクターを使用してボタンを無効にしていますか?

于 2013-12-23T16:32:07.700 に答える