如何在Django的基于类的列表视图中添加喜欢按钮

我已经在详细视图中添加了类似按钮,但是无法使逻辑在列表视图中添加类似按钮。我已注释掉我在下面的“详细信息视图”中使用的逻辑,该逻辑未能在“列表视图”中创建类似按钮的逻辑。谁能建议我做最好的方法,请有人帮我。

model.py

models.py中的代码

class AlbumVoteManager(models.Manager):

    def get_vote_or_unsaved_blank_vote(self,album,user):
        try:
            return Vote.objects.get(album=album,user=user)

        except ObjectDoesnotExist:
            return Vote(album=album,user=user)

class AlbumVote(models.Model):
    UP = 1
    DOWN = -1
    VALUE_CHOICE = ((UP,"?️"),(DOWN,)


    like = models.SmallIntegerField(null=True,blank=True,choices=VALUE_CHOICE)
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    album = models.ForeignKey(Album,on_delete=models.CASCADE)
    voted_on = models.DateTimeField(auto_now=True)
    created_on = models.DateTimeField(auto_now_add=True)

    objects = AlbumVoteManager()

    class Meta:
        unique_together = ('user','album')

form.py

form.py中的代码

class AlbumVoteForm(forms.ModelForm):

    class Meta:
        model = AlbumVote
        fields = ['like']

views.py

views.py中的代码

class AlbumListView(ListView):
    model = Album
    paginate_by = 5

    # def get_context_data(self,**kwargs):
    #     ctx = super().get_context_data(**kwargs)

    #     if self.request.user.is_authenticated:
    #         vote = 
AlbumVote.objects.get_vote_or_unsaved_blank_vote(album=self.object_list.object,user = self.request.user)
    #         if vote.id:
    #             vote_url = reverse('music:album_vote_update',kwargs={'album_id':vote.album.id,'pk':vote.id})
    #         else:
    #             vote_url = reverse('music:album_vote_create',kwargs={'album_id':self.object_list.object.id})


    #         vote_form = AlbumVoteForm(instance=vote)
    #         ctx['vote_form'] = vote_form
    #         ctx['vote_url'] = vote_url
    #     return ctx

album_list.html

相册列表视图中的代码。

  <div class="container">
    {% if object_list %}
        {% for album in object_list %}

        <div class="card my-3">
            <div class="card-header">
              Featured
            </div>
            <div class="card-body">
              <h5 class="card-title">

                    <a href="{% url 'music:detail_view' pk=album.id %}"><strong>{{album.title}}</strong></a>

              </h5>
              <p class="card-text">{{album.discription}}.</p>
              <a href="#" class="btn btn-primary">Go somewhere</a>
            </div>
          </div>
zczhouzhiwei 回答:如何在Django的基于类的列表视图中添加喜欢按钮

好吧,这可以通过将唯一的 id 传递给按钮来实现,而模板上的所有类都是相同的。 您可以参考 Medium doc 上的这篇文章,该文章使用 AJAX 实现了类似的内容

本文链接:https://www.f2er.com/3166652.html

大家都在问