无法通过主键获取Django对象

时间:2013-12-24 07:33:55

标签: python django

我有一个AJAX函数,可以调用另一个函数。

def update_votes(song_pk):
    song = Song.objects.get(pk=song_pk)
    song.votes += 1
    song.save()

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

单独使用时,按钮禁用部件可正常工作。但是当我在update_votes()函数中使用update_disable()函数时,没有任何作用。问题在于song = Song.objects.get(pk=song_pk)行。我做错了什么?

这就是我获取主键的方式。

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

这是我的HTML

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

1 个答案:

答案 0 :(得分:0)

此选择器$('.song_pk')将使用页面中的.song_pk类选择所有元素。 .val()将返回所选元素中第一个项目的值,这通常是最重要的一个。

其次,您可能希望将pk放入隐藏的输入标记中,而不是将pk放在隐藏的p标记中。如果您确实想将其放入p标记,则需要使用.text()代替.val()