Функция Dajax не может вызвать другую функцию

У меня есть Song модель с votes приписывать. у меня есть Vote as Favourite кнопка отображается под каждым Song объект. Я хочу, когда пользователь нажимает на Vote as Favourite застегнуть votes атрибут, связанный с этим Song объект должен увеличиваться на 1 и все Vote as Favourite кнопки должны быть отключены.

HTML

{% for song in dj_song_list %}
    <div>
        <p><h3>{{ song.name }}</h3></p>
        <p class="song_id">{{ song.song_id }}</p>
        <button type="button" class="btn btn-default btn-custom" class='vote' onclick="update();">Vote as Favourite</button>
    </div>
{% endfor %}

ajax.py

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

@dajaxice_register
def update_disable(request, song_id):
    update_votes(song_id)
    dajax = Dajax()
    dajax.assign('.vote', 'disabled', 'disabled')
    return dajax.json()

JavaScript

function update(){
     Dajaxice.hunt.update_disable(Dajax.process,{'song_id':$('.song_id').val()})
}

Часть отключения кнопки работает нормально, если используется одна. Но когда я использую update_votes() функция в update_disable() Функция ничего не работает. Что не так с моим кодом?

2 ответа

Решение

Я установил votes атрибут Song модель для default=None, Следовательно, он не смог выполнить операцию сложения. Я установил это сейчас как default=0 вместо.

Часть AJAX ничего не делает, потому что получает ошибки. Проблема в update_votes() функция. Проблемы могут быть:

  • Несколько объектов существуют с одинаковыми song_id значение
  • Песня с id не существует

Попробуйте использовать pdb.set_trace() в целях отладки:

def update_votes(id):
    import pdb; pdb.set_trace()
    song = Song.objects.get(song_id=id)
Другие вопросы по тегам