首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用models.manager计算投票数

使用models.manager计算投票数
EN

Stack Overflow用户
提问于 2019-06-06 04:19:55
回答 1查看 0关注 0票数 0

我正在使用models.manager来计算投票数,但我不明白为什么投票数没有显示出来。投票系统工作(与管理员核对),但经理不工作。

models.py

代码语言:javascript
复制
class PostVoteCountManager(models.Manager):
    def get_query_set(self):
        return super(PostVoteCountManager, self).get_query_set.annotate(
            votes=Count('vote')).order_by("-votes")

class Post(models.Model):
    rank_score = models.FloatField(default=0.0)
    with_votes = PostVoteCountManager()

class Vote(models.Model):
    voter = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)

    def __str__(self):
        return "%s voted %s" %(self.voter.username, self.post.title)

我的views.py

代码语言:javascript
复制
class PostListView(ListView):
    model = Post
    template_name = 'community/home.html'  # <app>/<model>_<viewtype>.html
    context_object_name = 'posts'
    #ordering = ['-date_posted']
    queryset = Post.with_votes.all()

    def get_context_data(self, **kwargs):
        context = super(PostListView, self).get_context_data(**kwargs)
        if self.request.user.is_authenticated:
            voted = Vote.objects.filter(voter=self.request.user)
            posts_in_page = [post.id for post in context["object_list"]]
            voted = voted.filter(post_id__in=posts_in_page)
            voted = voted.values_list('post_id', flat=True)
            context["voted"] = voted
        return context  

在HTML中我做

代码语言:javascript
复制
    {% for post in posts %}
<form method="post" action="{% url 'vote' %}" class="vote_form">
  <li> [{{ post.votes }}]
    {{post}}
    {% csrf_token %}
    <input type="hidden" id="id_post" name="post" class="hidden_id" value="{{ post.pk }}" />
    <input type="hidden" id="id_voter" name="voter" class="hidden_id" value="{{ user.pk }}" />
    {% if not user.is_authenticated %}
    <button disabled title="Please login to vote">+</button>
    {% elif post.pk not in voted %}
    <button>+</button>
    {% else %}
    <button>-</button>
    {% endif %}
      </form>
{% endform%}
EN

回答 1

Stack Overflow用户

发布于 2019-06-06 14:19:00

你把函数编写为get_query_set,但名称是get_queryset[Django-doc]。此外,你忘了在这里调用get_queryset(..)函数:

代码语言:javascript
复制
class PostVoteCountManager(models.Manager):

    def get_queryset(self):
        return super(PostVoteCountManager, self).get_queryset().annotate(
            votes=Count('vote')).order_by("-votes")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档