【问题标题】:Unable to get Django object via primary key [duplicate]无法通过主键获取 Django 对象 [重复]
【发布时间】:2013-12-24 07:33:54
【问题描述】:

我有一个 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_disable() 函数中使用update_votes() 函数时,没有任何效果。问题在于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 %}

【问题讨论】:

  • 请提供更多信息...有任何错误吗?
  • 按钮禁用部分单独使用时效果很好。但是当我在update_disable() 函数中使用update_votes() 函数时,没有任何效果。
  • 这是您第三次问同样的问题。请停止重复询问。

标签: python django


【解决方案1】:

此选择器$('.song_pk') 将选择页面中具有 .song_pk 类的所有元素。 .val() 将返回所选元素中第一项的值,通常是最顶部的一项。

其次,您可能希望将其放入隐藏的输入标签中,而不是将 pk 放入隐藏的 p 标签中。如果你真的想把它放到一个 p 标签中,你会想要使用.text() 而不是.val()

【讨论】:

  • 如何获取与我点击的按钮关联的{{ song.id }} 的值?
  • @JaskaranRana: .val() 适用于表单输入元素,而不是 p 标签。
  • 您可以像这样传递thisonclick="update(this);",然后在内部您可以使用 jquery 传递传递的this 以获取仅为该元素的选择器。但是,您可能希望使用 jQuery/unobtrusive JavaScript 附加事件处理程序,而不是执行您当前正在执行的操作。
  • 我在使用onclick="update(this);",然后在 JavaScript 中使用console.log($('.song_pk').text(this));。但这似乎是多次打印p.song.pk。正确的语法是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 2017-06-03
相关资源
最近更新 更多