【问题标题】:How to count users posts in Django?如何计算 Django 中的用户帖子?
【发布时间】:2015-08-30 12:00:27
【问题描述】:

在 Django 中的一个简单论坛应用程序中,我希望在每个线程上呈现多个用户在同一页面上的帖子(在用户帖子的用户面板上,就像所有传统论坛一样)。

以下是模型:

class Post(models.Model):
    title = models.CharField(max_length=75, null=True, blank=True)
    created = models.DateTimeField(auto_now_add=True)
    creator = models.ForeignKey(User, blank=True, null=True)
    updated = models.DateTimeField(auto_now=True)
    topic = models.ForeignKey(Topic)
    body = models.TextField(max_length=10000)


class Topic(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField(max_length=10000, null=True)
    forum = models.ForeignKey(Forum)
    created = models.DateTimeField()
    creator = models.ForeignKey(User, blank=True, null=True)
    updated = models.DateTimeField(auto_now=True)
    closed = models.BooleanField(blank=True, default=False)
    published = models.BooleanField(blank=True, default=False)
    visits = models.IntegerField(default = 0)
    weight = models.IntegerField(blank=True, default=0)
    slug = models.CharField(max_length=100, blank=True)


    def num_posts(self):
        return self.post_set.count()

    def num_replies(self):
        return max(0, self.post_set.count() - 1)

    def last_post(self):
        if self.post_set.count():
            return self.post_set.order_by("-created")[0]

    def __unicode__(self):
        return unicode(self.creator) + " - " + self.title

def save(self, *args, **kwargs):
        super(Topic, self).save(*args, **kwargs)

我也有这个奇怪的模型:

class PostCount(models.Model):
    user = models.OneToOneField(User)
    posts =  models.IntegerField(default=0)
    @classmethod
    def create(cls, user):
        postcount = cls(user=user)
        return postcount 

这会以某种方式神奇地返回用户主题的数量(而不是帖子的数量),以便可以使用{{topic.creator.postcount.posts}} 在模板中访问它们。

以及呈现主题的视图:

def topic(request, topic_id):
    """Listing of posts in a topic."""


    posts = Post.objects.filter(topic=topic_id).order_by("created")
    posts = mk_paginator(request, posts, DJANGO_SIMPLE_FORUM_REPLIES_PER_PAGE)
    topic = Topic.objects.get(pk=topic_id)    

    topic.visits += 1
    topic.save()

    forum = topic.forum
    return render_to_response("myforum/topic.html", add_csrf(request, posts=posts, pk=topic_id,
        topic=topic, forum= forum), context_instance=RequestContext(request))

所以我想知道如何最好地在模板中获得用户的帖子数量?

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    您不想使用内置计数吗,因为那样可以解决您的问题。

    views.py- 应该获取所有用户,如果您想要一个选定的用户组本身,您只需使用过滤器

     context = {}
     post_numbers =  Post.objects.all().count()
     context['post_numbers'] = post_numbers
    

    模板

      {{ post_numbers }}
    

    【讨论】:

    • 这不会在模板中显示任何内容。也请不要涉及多个用户。这个查询集如何捕获它们?
    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 2020-04-14
    • 2020-01-11
    • 1970-01-01
    • 2019-06-02
    • 2020-12-26
    相关资源
    最近更新 更多